我在装有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

我该如何解决这个问题?


当前回答

Sudo chmod 666 /var/run/docker.sock

这帮助我,当我得到错误,甚至登录到docker 但现在这在我的系统中工作得很好。

其他回答

在Linux环境下,安装docker后,需要重新启动docker才能更好地避免这个问题。

$ sudo systemctl restart docker

最直接的解决办法是打字

Sudo chmod 666 /var/run/docker.sock 每次你启动你的机器。然而,这种方法会破坏现有的任何系统安全性,并向所有人开放Docker套接字。如果这对你来说是可以接受的——例如:你的机器的唯一用户——那么就使用它。

尽管如此,每次启动机器时都需要它,您可以通过添加使它在引导时运行

start on startup
task
exec chmod 666 /var/run/docker.sock

打开/etc/init/docker-chmod.conf文件。

使用这个命令

sudo usermod -aG docker $USER

然后重新启动你的电脑这对我有用。

升级后,我的权限被拒绝了。 执行安装步骤后的“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)

Sudo chmod 666 /var/run/docker.sock

这帮助我,当我得到错误,甚至登录到docker 但现在这在我的系统中工作得很好。