如何在 Linux 中以非 root 用户身份运行 Docker

在 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/ 目录。 它将自动重新创建,但您将丢失所有自定义设置(如果有)。

希望这可以帮助。

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!