我在装有Ubuntu操作系统的机器上安装了Docker。
当我跑步时:
sudo docker run hello-world
一切都很好,但是我想隐藏sudo命令以使该命令更短。
如果我写的命令没有sudo
docker run hello-world
显示如下:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.
当我试图跑步时,同样的情况也会发生:
docker-compose up
我该如何解决这个问题?
升级后,我的权限被拒绝了。
执行安装步骤后的“mkb”步骤不会改变任何东西,因为我的用户已经在“docker”组中;我试了两次都没有成功。
经过一个小时的搜索,下面的解决方案终于起作用了:
sudo chmod 666 /var/run/docker.sock
解决方案来自奥尔尚斯克。
看起来升级已经重新创建了套接字,但没有给docker组足够的权限。
问题
这个硬chmod打开安全漏洞,每次重启后,这个错误会一次又一次地启动,每次都必须重新执行上面的命令。我要一个彻底的解决办法。为此你有两个问题:
1) Problem with SystemD : The socket will be create only with owner 'root' and group 'root'.
You can check this first problem with this command :
ls -l /lib/systemd/system/docker.socket
If every this is good, you should see 'root/docker' not 'root/root'.
2 ) Problem with graphical Login : https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group
You can check this second problem with this command :
groups
If everything is correct you should see the docker group in the list.
If not try the command
sudo su $USER -c groups
if you see then the docker group it is because of the bug.
解决方案
如果你设法得到一个图形登录的工作,这应该做的工作:
sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
但如果你不能控制这个bug,一个不错的解决方案可以是:
sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
这种工作是因为您处于图形化环境中,并且可能是计算机上唯一的用户。
在这两种情况下,您都需要重新启动(或sudo chmod 666 /var/run/docker.sock)
为了解决这个问题,我搜索了我的docker和docker-compose安装在哪里。在我的例子中,docker安装在/usr/bin/docker, docker-compose安装在/usr/local/bin/docker-compose路径下。然后,我在我的终端中这样写:
码头工人:
sudo chmod +x /usr/bin/docker
docker-compose:
sudo chmod +x /usr/local/bin/docker-compose
现在我不需要在我的命令docker中写入单词sudo
/***********************************************************************/
勘误:
这个问题的最佳解决方案由@mkasberg评论。我引用评论:
这可能会起作用,你可能会遇到问题。此外,这也是一个安全漏洞。你最好把自己加入docker组,就像文档中说的那样。sudo groupadd docker, sudo usermod -aG docker $USER。
文档:https://docs.docker.com/install/linux/linux-postinstall/