如何在不使用 Docker 的情況下使用 Docker sudo 在 Ubuntu 上

本教程我將向您展示如何在不使用的情況下輸入 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。 感謝您的閱讀,如果知道任何其他選擇,請在評論中告訴我們。