背景
Docker是PaaS供應商dotCloud開源的一個基于LXC 的高級容器引擎,源代碼托管在 GitHub 上, 基于Go語言開發并遵從Apache 2.0協議開源。Docker提供了一種在安全、可重復的環境中自動部署軟件的方式,它的出現拉開了基于云計算平臺發布產品方式的變革序幕。
對Linux系統管理員或高級用戶而言,sudo是必不可少的最重要的命令之一。而因為使用的是sudo安裝docker,所以會導致一個問題。以普通用戶登錄的狀況下,在使用 docker images 時必須添加 sudo ,那么如何讓docker免 sudo 依然可用呢?于是開始搜索解決方案。
理清楚問題
當以普通用戶身份去使用 docker images 時,出現以下錯誤:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied
可以看都,最后告知我們時權限的問題。那么在linux文件權限有三個數據左右 drwxrwxrwx ,
其中第一為 d 代表該文件是一個文件夾
前三位、中三位、后三位分別代表這屬主權限、屬組權限、其他人權限。
如圖,其中 第三列、第四列分別代表文件的屬主、屬組。
上圖是報錯文件的權限展示,可以看到其屬主為 root ,權限為 rw ,可讀可寫;其屬組為 docker ,權限為 rw ,可讀可寫。如果要當前用戶可直接讀取該文件,那么我們就為當前用戶添加到 docker 屬組即可。
如果還沒有 docker group 就添加一個:
sudo groupadd docker
將用戶加入該 group 內。然后退出并重新登錄就生效啦。
sudo gpasswd -a ${USER} docker
重啟 docker 服務
sudo service docker restart
切換當前會話到新 group 或者重啟 X 會話
newgrp - docker
注意:最后一步是必須的,否則因為 groups 命令獲取到的是緩存的組信息,剛添加的組信息未能生效,所以 docker images 執行時同樣有錯。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答
圖片精選