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

其他回答

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

$ sudo systemctl restart docker

我们总是忘记acl。看到setfacl。


sudo setfacl -m user:$ user: rw /var/run/docker.sock

你可以按照以下步骤来做,这会对你有用:

create a docker group sudo groupadd docker add your user to this group sudo usermod -aG docker $USER list the groups to make sure that docker group created successfully by running this command groups run the following command also to change the session for docker group newgrp docker change the group ownership for file docker.socksudo chown root:docker /var/run/docker.sock change the ownership for .docker directory sudo chown "$USER":"$USER" /home/"$USER"/.docker -R finally sudo chmod g+rwx "$HOME/.docker" -R

在这个测试之后,你可以运行docker ps -a

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

这对我来说很有用:

进入容器内部并修改文件的ACL

sudo usermod -aG docker $USER
sudo setfacl --modify user:$USER:rw /var/run/docker.sock

这是一个比使用chmod更好的解决方案。