如何修复 docker:获得权限被拒绝问题

新手上路,请多包涵

我在我有 Ubuntu 操作系统的机器上安装了 Docker。

当我运行时:

 sudo docker run hello-world

一切正常,但我想隐藏 sudo 命令以使命令更短。

如果我写的命令没有 sudo

 docker run hello-world

显示以下内容:

 docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.

当我尝试运行时也会发生同样的情况:

 docker-compose up

我该如何解决这个问题?

原文由 Carlos Andres 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 999
2 个回答

如果要以非 root 用户身份运行 docker,则需要将其添加到 docker 组。

  1. 如果 docker 组不存在,则创建它
$ sudo groupadd docker

  1. 将您的用户添加到 docker 组。
 $ sudo usermod -aG docker $USER

  1. 登录到新的 docker 组(以避免必须注销/再次登录;但如果还不够,请尝试重新启动):
 $ newgrp docker

  1. 检查docker是否可以在没有root的情况下运行
$ docker run hello-world

如果仍然出现错误,请重新启动

$ reboot

警告

docker 组授予与 root 用户等效的权限。有关这如何影响系统安全性的详细信息,请参阅 Docker Daemon Attack Surface。 .

取自 docker 官方文档: manage-docker-as-a-non-root-user

原文由 mkb 发布,翻译遵循 CC BY-SA 4.0 许可协议

升级后,我的权限被拒绝。执行“mkb” 安装后步骤的步骤 没有任何改变,因为我的用户已经在“docker”组中;我以任何方式重试了两次,但均未成功。

经过一个小时的搜索,以下解决方案终于奏效了:

 sudo chmod 666 /var/run/docker.sock

解决方案来自 Olshansk

看起来升级在没有足够权限的情况下重新创建了 ‘docker’ 组的套接字。

问题

这个硬 chmod 打开了安全漏洞,每次重启后,这个错误一次又一次地开始,你每次都必须重新执行上述命令。我想要一个一劳永逸的解决方案。为此,您有两个问题:

  • 1) SystemD 的问题:只有所有者“root”和组“root”才能创建套接字。

您可以使用以下命令检查第一个问题:

   ls -l /lib/systemd/system/docker.socket

如果这一切都很好,你应该看到’ root/docker ‘不是’ root/root ‘。

  • 2) 图形登录 问题https ://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group

您可以使用以下命令检查第二个问题:

   groups

如果一切正确,您应该会在列表中看到 docker 组。如果没有尝试命令

  sudo su $USER  -c groups

如果您看到 docker 组,那是因为该错误。

解决方案

如果您设法获得图形登录的解决方法,这应该可以完成工作:

 sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

但是如果你不能管理这个错误,一个不错的解决方案可能是这样的:

 sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

这是因为您处于图形环境中,并且可能是您计算机上的唯一用户。在这两种情况下,您都需要重新启动(或 sudo chmod 666 /var/run/docker.sock

原文由 Galigator 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题