docker.sock 权限被拒绝

新手上路,请多包涵

当我尝试运行简单的 docker 命令时,例如:

 $ docker ps -a

我收到一条错误消息:

获得权限被拒绝… /var/run/docker.sock: connect: 权限被拒绝

当我检查权限时

$ ls -al /var/run/

我看到这一行:

 srw-rw---- root docker docker.sock

因此,我遵循许多论坛的建议,并将本地用户添加到 docker 组:

 $ sudo usermod -aG docker $USER

但这无济于事。我仍然收到相同的错误消息。我该如何解决?

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

阅读 721
2 个回答

对于那些刚接触 shell 的人,命令:

 $ sudo usermod -aG docker $USER

需要在你的 shell 中定义 $USER 。默认情况下通常会出现这种情况,但您可能需要在某些 shell 中将该值设置为您的登录 ID。


更改用户的组不会更改用户已打开的现有登录名、终端和 shell。为避免再次执行登录,您可以简单地运行:

 $ newgrp docker

在您当前的 shell 中访问该组。


完成此操作后,用户有效地拥有服务器上的 root 访问权限,因此仅对受信任且具有不受限制的 sudo 访问权限的用户执行此操作。

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

原因:错误信息表示当前用户无法访问docker引擎,因为用户没有足够的权限访问UNIX套接字与引擎进行通信。

快速解决:

  1. 使用 sudo 以 root 身份运行命令。
    sudo docker ps

  1. 更改当前用户的 /var/run/docker.sock 的权限。
    sudo chown $USER /var/run/docker.sock

注意:运行 sudo chmod 777 /var/run/docker.sock 将解决您的问题,但它会为每个人打开 docker 套接字,这是@AaylaSecura 指出的安全漏洞。因此,不应使用它,除非用于本地系统上的测试目的。

永久解决方案:

将当前用户添加到 docker 组。

 sudo usermod -a -G docker $USER


注意:您必须注销并重新登录才能使更改生效。

请参阅此 博客 以了解有关以非 root 用户身份管理 Docker 的更多信息。

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

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