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

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

我已经按照说明安装了docker这里。 我用Ubuntu Trusty 14.04 (LTS)(64 位)。安装过程中一切都很顺利。命令也$ sudo docker run -i -t ubuntu /bin/bash顺利完成(在我打开的控制台中输入“exit”之后)。但当我尝试执行其他操作时,出现“权限被拒绝”的情况。例如:

`$ sudo docker run -d -P training/webapp python app.py`

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

` docker info`

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

如何解决这个问题?我在 Google 上搜索了这个问题,但没有找到适合我的情况的解决方案。

答案1

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

$ sudo groupadd docker

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

$ sudo gpasswd -a ${USER} docker

重新启动 Docker 守护进程:

$ sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ sudo systemctl restart snap.docker.dockerd

您应该注销并重新登录以更新组权限。为了避免这种情况,您可以按如下方式切换到子 shell。或者使用这个问题

su - $USER

答案2

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

setenforce 0

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

答案3

由于 selinux,我遇到了同样的问题。您可以通过以下方式检查 selinux 是否是罪魁祸首:

  1. 禁用 selinux:setenforce 0
  2. 重试

如果禁用 selinux 解决了您的问题,那么就没有理由继续禁用它:

  1. 启用 selinux:setenforce 1
  2. 在selinux配置中允许套接字连接:setsebool docker_connect_any true
  3. --priviledged使用选项运行 Docker 容器

答案4

经过当前版本我们不需要添加该组docker
它在安装时自动存在。您可以使用以下命令检查:

$ sudo groupadd docker
groupadd: group 'docker' already exists

因此为了以非 root 用户身份管理 Docker,只需将您的用户添加到 docker 组,然后注销并重新登录,以便重新评估您的组成员身份:

$ sudo usermod -aG docker $USER
$ logout

重新登录时检查

$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

您甚至可以强制使用以下GROUP:docker组作为您的新主要组:

$ sudo chown "$USER":"docker" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
$ sudo usermod -g docker ${USER}
$ logout

重新登录时检查

$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...

相关内容