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

我该如何解决这个问题?


当前回答

Lightdm和kwallet附带了一个bug,在登录时似乎无法通过补充组。为了解决这个问题,除了sudo usermod -aG docker $USER,我还必须注释掉

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

to

#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so

在/etc/pam.D /lightdm重启之前,对于docker-group实际有效果。

Bug: https://bugs.launchpad.net/lightdm/+bug/1781418和这里:https://bugzilla.redhat.com/show_bug.cgi?id=1581495

其他回答

使用这个命令

sudo usermod -aG docker $USER

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

最直接的解决办法是打字

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

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

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

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

重启机器对我很有效。

$ reboot

认真的人。不要在你的组中添加Docker或修改套接字posix(没有加固SELinux),这是一个简单的方法来创建一个根privesc。只要在你的。bashrc中添加一个别名,这样更简单更安全:alias dc='sudo docker'。

我用命令解决了这个错误:

$ sudo chmod 666 /var/run/docker.sock