我在装有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
如果你想以非root用户运行docker,那么你需要将它添加到docker组中。
如果docker组不存在,请创建docker组
$ sudo groupadd docker
将您的用户添加到docker组。
$ sudo usermod -aG docker $USER
登录到新的docker组(以避免再次注销/登录;但如果还不够,请尝试重新启动):
$ newgrp docker
检查docker是否可以在没有root的情况下运行
$ docker run hello-world
如果仍然有错误,重新启动
$ reboot
警告
docker组授予等同于root用户的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon攻击面。
摘自docker官方文档:
manage-docker-as-a-non-root-user
这肯定不是问题所在,但由于它是谷歌错误消息时的第一个搜索结果,所以我就把它留在这里。
首先,使用以下命令检查docker服务是否正在运行:
Systemctl status docker.service
如果它没有运行,试着启动它:
Sudo systemctl start docker.service
... 并再次检查状态:
Systemctl status docker.service
如果还没有启动,请调查原因。可能,您修改了配置文件并犯了一个错误(就像我在修改/etc/docker/daemon.json时所做的那样)。