在 Ubuntu 上安装 Docker 很容易! 任何人,甚至是新手,都可以在 15 分钟内安装它。 安装 Docker 后,我发现我无法以普通用户的身份执行大多数 Docker 操作。 我必须以“root”用户或“sudo” 每次都获得许可。每当我尝试以非 root 用户身份运行 Docker 时 sudo 许可,我收到以下错误:
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.40/version: dial unix /var/run/docker.sock: connect: permission denied
例如,我想使用以下命令以普通用户身份检查 Docker 版本:
$ docker version
而且,我收到此错误消息:
Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:25:46 2020 OS/Arch: linux/amd64 Experimental: false 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.40/version: dial unix /var/run/docker.sock: connect: permission denied
但是当我运行相同的命令时 sudo 允许;
$ sudo docker version
它显示当前安装的 Docker 版本的全部详细信息,如下面的输出所示。
Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:25:46 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) Go version: go1.12.17 Git commit: afacb8b7f0 Built: Wed Mar 11 01:24:19 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
在 Docker 文档页面中搜索后,我意识到 Docker 守护进程默认绑定到 Unix 套接字而不是 TCP 端口。 因为 Unix 套接字归根所有 用户,Docker 守护程序将仅以 root 用户身份运行。 因此,普通用户无法执行大多数 Docker 命令。
如果要在 Linux 中以非 root 用户身份运行 Docker,则需要执行以下步骤。 我在 Ubuntu 18.04 服务器上对此进行了测试,效果很好! 它也应该适用于其他 Linux 发行版。
在 Linux 中以非 root 用户身份运行 Docker
要修复 Docker 权限被拒绝错误并以非 root 用户身份使用 Docker,请创建一个名为 “码头工人” 使用以下命令:
$ sudo groupadd docker
接下来,将您的用户添加到 码头工人 团体:
$ sudo usermod -aG docker $USER
将用户添加到 docker 组后,注销并重新登录以使更改生效。
或者,运行以下命令将更改应用于组:
$ newgrp docker
从现在开始,普通(非root)用户可以使用Docker而无需 sudo 权限。
让我以普通用户身份运行以下命令:
$ docker version
$ docker run hello-world
示例输出: