簡介
默認安裝完 docker 后,每次執行 docker 都需要運行 sudo 命令,非常浪費時間影響效率。如果不跟 sudo,直接執行 docker images 命令會有如下問題:
FATA[0000] Get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
於是考慮如何免 sudo 使用 docker,經過查找資料,發現只要把用戶加入 docker 用戶組即可,具體用法如下。
免 sudo 使用 docker
-
如果還沒有 docker group 就添加一個:
sudo groupadd docker -
將用戶加入該 group 內。然后退出並重新登錄就生效啦。
sudo gpasswd -a ${USER} docker -
重啟 docker 服務
sudo service docker restart -
切換當前會話到新 group 或者重啟 X 會話
newgrp - docker OR pkill X
注意,最后一步是必須的,否則因為 groups 命令獲取到的是緩存的組信息,剛添加的組信息未能生效,所以 docker images 執行時同樣有錯。
原因分析
-
因為
/var/run/docker.sock所屬 docker 組具有 setuid 權限$ sudo ls -l /var/run/docker.sock srw-rw---- 1 root docker 0 May 1 21:35 /var/run/docker.sock
