本教程我將向您展示如何在不使用的情況下輸入 docker 命令 sudo 命令在 Ubuntu Linux 機器上。
如果您在本地機器上使用 Docker 進行測試和開發,您可能會遇到這些消息。
$ docker run hello-world
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get https://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/json: dial unix /var/run/docker.sock: connect: permission denied
您可能會通過使用來規避這一點 sudo 在 docker 命令或使用 su 以 root 登錄之前。 但也不必如此。 可以以普通用戶身份運行,有兩種方式。 一種是將您的用戶添加到 docker 組,另一種是允許它寫入 docker 使用的 Unix 套接字。 我們將展示在 Ubuntu 18.04 LTS 上執行此操作的兩種方法。
1)將用戶添加到docker組
如果不存在,則創建新組。 這個命令可能會失敗,因為組可能已經存在,但還是讓我們運行它。
sudo groupadd docker
接下來我們需要將當前用戶添加到組中。
sudo gpasswd -a $USER docker
如果您不想添加當前登錄的用戶,而是添加其他用戶,則將 $USER 更改為該用戶的用戶名。 請注意,必須允許用戶使用 sudo.
最後,我們需要重新加載 shell 以應用新的組設置。 為此,您可以重新啟動,也可以註銷並重新登錄,但是當您真正想要更微妙的東西時,這兩種方法都是核方法,所以讓我們改為執行此命令
newgrp docker
現在我們準備好運行 docker 測試程序了 sudo
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
2) ACL 列表
還有另一種方法可以做到這一點,那就是 ACL 列表。
仍然以 sudoer 用戶身份登錄,我們需要運行此命令
sudo setfacl -m user:bobby:rw /var/run/docker.sock
當然,為您想要使用 docker 的實際用戶更改 bobby。
現在您可以以該用戶身份登錄。
su bobby
現在我們可以使用 docker 了 example 輸入這個命令
docker ps
如果你有一些容器,它應該列出容器。 如果沒有,至少它不會向您顯示權限被拒絕的錯誤。
另請閱讀:
- Linux 用戶添加命令及其所有選項
- Linux Groupadd 命令 – 添加新組
就是這樣,有兩種方式讓 docker 沒有 sudo. 它將節省您的打字時間並使您更快地使用 docker。 感謝您的閱讀,如果知道任何其他選擇,請在評論中告訴我們。