我在装有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
Ubuntu 21.04 systemd套接字所有权
让我先说明一下,这是一个非常适合我在本地开发期间的解决方案,我在这里搜索ubuntu docker权限错误,所以我就把这个留在这里。
unix套接字不是我的,所以我学会了。
sudo chown $(whoami):$(whoami) /var/run/docker.sock
对于您的开发环境,另一个更持久的解决方案是修改unix套接字创建的用户所有权。这将给你的用户所有权,所以它将在重启之间坚持:
sudo nano /etc/systemd/system/sockets.target.wants/docker.socket
docker.socket:
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=YOUR_USERNAME_HERE
SocketGroup=docker
[Install]
WantedBy=sockets.target