我已经按照说明安装了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 是否是罪魁祸首:
- 禁用 selinux:
setenforce 0
- 重试
如果禁用 selinux 解决了您的问题,那么就没有理由继续禁用它:
- 启用 selinux:
setenforce 1
- 在selinux配置中允许套接字连接:
setsebool docker_connect_any true
--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),...