在 Ubuntu 上安装 Docker 很容易! 任何人,即使是新手,都可以在 15 分钟内安装它。 安装 Docker 后,我注意到我无法以普通用户的身份执行大多数 Docker 操作。 我必须以“root”用户或“sudo” 每次都获得许可。每当我尝试以非 root 用户身份或不以非 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)用户可以在没有 sudo 权限。
让我以普通用户身份运行以下命令:
$ docker version
$ docker run hello-world
样本输出:
看? 我现在可以运行这两个 Docker 命令,而无需 sudo 允许。
以防万一,您已经使用 ‘ 运行了一些 Docker 命令sudo’ 在将用户添加到 Docker 组之前获得权限,您可能会看到如下所示的错误。
WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
上述错误信息表明您的 ~/.docker/ 由于 ‘sudo’ 命令。 要解决此问题,请使用以下命令更改此目录的所有权和权限:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
注销并重新登录以使其生效。
如果仍然无法解决问题,您可能需要删除您的 ~/.docker/ 目录。 它将自动重新创建,但您将丢失所有自定义设置(如果有)。
希望这可以帮助。
资源:
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | Twitter | 领英 | RSS订阅
祝你有美好的一天!!