如何修复ubuntu上的docker权限拒绝错误

时间:2020-03-05 15:26:34  来源:igfitidea点击:

在运行docker命令时,它会给我扔这个错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied

在尝试连接到ubuntu中的docker时,修复"在尝试连接到Docker守护程序套接字"错误时拒绝

有两种方法可以处理它。

修复1:使用sudo运行所有docker命令

如果系统上有sudo访问权限,则可以使用sudo运行每个docker命令,并且在尝试连接到Docker守护程序套接字时,我们将不会看到此权限拒绝。

sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
13dc0f4226dc        ubuntu              "bash"              17 hours ago        Exited (0) 16 hours ago                       container-2
2d9a8c190e6c        ubuntu              "/bin/bash"         17 hours ago        Created                                       container-1

但是运行每个与sudo的docker命令都是超级不方便的。
我们错过了向开头添加sudo,我们将再次获得"权限"错误。

修复2:没有sudo运行docker命令

要在没有sudo的情况下运行Docker命令,我们可以添加用户帐户(或者我们尝试将此问题修复此问题的帐户)到Docker组。

首先,使用GroupAdd命令创建Docker组。

该组可能已存在但运行组创建命令不会受到伤害。

sudo groupadd docker

既然我们有Docker组,请使用usermod命令添加用户到此组。

我假设我们正在尝试为我们自己的用户帐户进行这样做,并且在这种情况下,我们可以使用$用户变量。

sudo usermod -aG docker $USER

通过列出组的用户,验证用户已被添加到Docker组。

我们可能必须再退出并再次登录。

Hyman@theitroad:~$groups
igi adm cdrom sudo dip plugdev lpadmin sambashare docker

如果在注销之后,我们检查组和Docker组也未列出,我们可能必须重新启动Ubuntu。

要避免,我们可以使用newgrp命令liks:

newgrp docker

现在,如果我们尝试在没有sudo的情况下运行docker命令,它应该正常工作。

进一步的故障排除

在某些情况下,如果我们在过去使用sudo使用sudo,则可能需要特别地为某些文件添加其他权限。

我们可以尝试更改/var/run/docker.sock文件的组所有权。

sudo chown root:docker /var/run/docker.sock

我们也可能尝试更改~/.docker目录的组所有权。

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

然后尝试使用sudo运行docker。
现在应该没问题。