docker.sock权限被拒绝

Jac*_*ian 51 linux docker

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

$ docker ps -a
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

得到权限否认... /var/run/docker.sock:connect:权限被拒绝

当我检查权限时

$ ls -al /var/run/
Run Code Online (Sandbox Code Playgroud)

我看到这一行:

srw-rw---- root docker docker.sock
Run Code Online (Sandbox Code Playgroud)

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

$ sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我仍然得到相同的错误消息.我该如何解决?

BMi*_*tch 112

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

$ sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

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


更改用户组不会更改用户已打开的现有登录,终端和shell.要避免再次执行登录,您只需运行:

$ newgrp docker
Run Code Online (Sandbox Code Playgroud)

在当前shell中访问该组.


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

  • 需要运行 `newgrp docker ` 命令来激活对组的更改 (4认同)
  • 从未听说过`newgrp docker` ...非常酷-谢谢 (2认同)
  • @BrunoLaturner如果您在Ubuntu上,我听说过LightDM会导致问题,该问题导致它从登录用户中删除辅助组。 (2认同)
  • @BMitch你在国家安全局里监视我吗?那是我的确切配置和错误。谢谢!根据https://askubuntu.com/q/1057258/259660解决 (2认同)

ash*_*que 14

输入命令并探索 docker,无需 sudo 命令

sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)


小智 9

  1. 确保设置了$ USER变量

$ echo $ USER

$ sudo usermod -aG泊坞窗$ USER

  1. 登出
  2. 登录后,重新启动docker服务

$ sudo systemctl重新启动docker

$ docker ps

  • 重新启动 Docker 守护进程是一件大事。将用户添加到 Docker 组后总是忘记这样做:\ (4认同)
  • 不需要重新启动守护进程,它是 root,并且已经将套接字配置为以 docker 身份运行。我认为它可以修复的唯一问题是您是否修改了套接字权限。 (2认同)

小智 5

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

快速解决:

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

    即-sudo docker ps

  2. 更改当前用户的/var/run/docker.sock权限。

    即-sudo chmod 777 /var/run/docker.sock

永久解决方案:

将当前用户添加到docker组。这可以通过键入来实现

sudo usermod -a -G泊坞窗$ USER


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

  • 你可能会错过投票,因为人们退出后忘记回来投票,哈哈。 (3认同)
  • 我敢打赌他们错过了投票,因为“快速修复”是一场安全灾难...... docker 套接字永远不应该被世界访问...... (3认同)