如何解决ubuntu中docker的权限问题?

Che*_*rry 39 linux permissions ubuntu docker

我已经按照这里的描述安装了 docker 。我使用Ubuntu Trusty 14.04 (LTS) (64-bit)。安装过程中一切正常。命令也$ sudo docker run -i -t ubuntu /bin/bash完成得很好(在我在打开的控制台中输入“exit”之后。但是当我尝试做其他事情时,我得到“权限被拒绝”。例如:

`$ sudo docker run -d -P training/webapp python app.py`
Run Code Online (Sandbox Code Playgroud)

结果在 Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied

` docker info`
Run Code Online (Sandbox Code Playgroud)

结果在 Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied

如何解决这个问题?我用谷歌搜索了这个问题,但我找不到适合我的案例的解决方案。

小智 57

如果 docker 组不存在,请添加它。

$ sudo groupadd docker
Run Code Online (Sandbox Code Playgroud)

将连接的用户添加${USER}到 docker 组。更改用户名以匹配您的首选用户。

$ sudo gpasswd -a ${USER} docker
Run Code Online (Sandbox Code Playgroud)

重启 Docker 守护进程:

$ sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ sudo systemctl restart snap.docker.dockerd
Run Code Online (Sandbox Code Playgroud)

您应该注销并重新登录以更新组权限。为避免这种情况,您可以按如下方式切换到子 shell。或者使用这个问题中提到的任何其他技巧:

su - $USER
Run Code Online (Sandbox Code Playgroud)

  • 我必须重新启动才能使其生效。 (15认同)
  • 不必重新启动,只需注销并登录即可。 (8认同)
  • 注销做到了,即使 `exec $SHELL` 没有做到。我很想知道通过哪种机制注销解决了这个问题。这不是窗户! (2认同)

小智 5

如果您运行的是 CentOS 或 RedHat,您可能必须先通过运行以下命令来禁用 SELinux:

setenforce 0
Run Code Online (Sandbox Code Playgroud)

之后重新启动以重新启用 SELinux 或运行setenforce 1.