『壹』 Docker:非root用戶啟動操作docker
摘要: docker , linux
一般都是用root用戶啟動和操作docker,當是普通用戶運行容器啟動項目時報錯沒有許可權
docker守護進程後台啟動時,需要讀取Unix套接字 /var/run/docker.sock ,這個文件root所有,docker用戶組可操作,因此普通非docker組的用戶沒有許可權訪問
類似的Mysql客戶端也可以使用socket進行連接,文件在/var/run/mysqld/mysqld.sock
默認是777許可權,如果改成770,則非root用戶或者非mysql組用戶也將無法連接MySQL
退出升氏段root用戶,普通用戶無法報錯無法通過socket連接
本質上還是使用root運行docker,只是在啟動的時候可以以root用戶啟動docker,為了避免每次啟動需要輸入密碼,需要給普通用戶sudo許可權以及可以免密碼方式登錄。
在/etc/sudoers文件中設置免密碼
此時再使用sudo運行docker即可,在其他shell腳本中docker run前面增加sudo
如果不使用sudo則無許可權操作docker
docker安裝之後默認會創建docker組,docker組擁有讀取套接字許可權,因此將該普通用戶加入docker組,該組下所有用戶有訪問unix套接字許可權,最後刷新用戶的初始組即可。
先查看是否有docker用戶,如果沒有需要手動增加
如果/var/run/docker.sock的用戶組不是docker而是root需要使用 chgrp 修改一下
將普通用戶添加到docker組
此時查看test用戶所在的組
發現還是沒有docker組,使用 newgrp 刷新以下用戶的初始組
此時再次查看用戶的組以已經出現docker
然後直接以用戶操作docker即可
或者不使用newgrp直接重新登錄即可
gpasswd是linux下組管理工具,用戶添加用戶到組和從組中刪除用戶,必須是sudo執吵譽行
測試刪除和添加test用戶於docker組
此時退出終端重新登錄則test的docker組消失,再添加進來
添加之後在當前終端不能立刻生效,需要使用核猛newgrp將新增加的組添加到用戶組的集合中刷新,立即生效
以後退出登錄後新登錄進來用戶的用戶組都會更新生效