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

我该如何解决这个问题?


当前回答

重启机器对我很有效。

$ reboot

其他回答

一个简单的破解方法就是以“超级用户”的身份执行。

要访问超级用户或root用户,请执行以下命令:

在user@computer:

$sudo su

输入密码后,你将进入root@computer:

$docker run hello-world

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

只要打开终端,输入这个命令

sudo chmod 666 /var/run/docker.sock

我也遇到了类似的问题,但是我想创建的容器需要挂载/var/run/docker。sock作为一个卷(Portainer Agent),同时在不同的名称空间下运行它。通常容器并不关心它是从哪个名称空间开始的——这就是问题所在——但由于访问是从不同的名称空间进行的,因此必须避免这一点。

在容器的run命令中添加——userns=host,使其能够获得正确的权限。

这是一个非常具体的用例,但在经过了比我想要承认的更多的研究时间后,我只是想,如果其他人最终陷入这种情况,我应该与世界分享它:)

在unix:///var/run/ Docker上尝试连接Docker守护进程套接字时被拒绝权限。sock: http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json:拨号unix /var/run/docker。Sock: connect:拒绝权限

sudo chmod 666 /var/run/docker.sock

这解决了我的问题。