原标题:如何在Linux中以非root用户运行Docker?

在Ubuntu上安装Docker很容易!连新手都可以在15分钟内安装完毕。安装Docker后,我注意到无法以普通用户的身份执行大多数Docker操作。每次我都只好以“root”用户的身份或拥有“sudo”权限的情况下运行Docker。每当我尝试以非root用户的身份或在没有sudo权限的情况下运行Docker,都会出现以下错误:

  • Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%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 http://%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套接字归root用户拥有,Docker守护程序将只能以root用户的身份运行。因此,普通用户无法执行大多数Docker命令。

    如果你想要在Linux中以非root用户的身份运行Docker,需要执行以下步骤。我在Ubuntu 18.04服务器上进行了测试,效果很好!它也应该适用于其他Linux发行版。

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

    要解决Docker权限被拒绝错误,并以非root用户的身份使用Docker,请使用以下命令创建一个名为“docker”的组:

  • $ sudo groupadd docker
  • 接下来,将你的用户添加到docker组:

  • $ sudo usermod –aG docker $ USER
  • 将用户添加到docker组后,注销并重新登录,使更改生效。

    或者,运行以下命令,对组进行更改:

  • $ newgrp docker
  • 从现在开始,普通用户(非root用户)可以在没有sudo权限的情况下使用Docker。

    不妨以普通用户的身份运行以下命令:

  • $ docker version
  • $ docker run hello-world
  • 示例输出:

    看到了吗?现在我在没有sudo权限的情况下可以运行这两个Docker命令。

    假设你在将用户添加到Docker组之前已经在拥有“sudo”权限的情况下运行了几个Docker命令,可能会看到如下所示的错误:

  • WARNING: Error loading config file: /home/user/.docker/config.json -
  • stat /home/user/.docker/config.json: permission denied
  • 上述错误信息表明,由于“sudo”命令,你的~/.docker/目录是在拥有不正确权限的情况下创建的。为了解决这个问题,使用以下命令更改该目录归属和权限:

  • $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
  • $ sudo chmod g+rwx "$HOME/.docker" -R
  • 注销、重新登录,使之生效。

    如果这仍解决不了问题,你可能需要删除~/.docker/目录。该目录会自动重新创建,但你会失去所有自定义设置,如果之前有的话。

    但愿本文对你有所帮助。

    原文标题:How To Run Docker As Non-root User In Linux,作者:SK 返回搜狐,查看更多

    责任编辑:

    声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。