无法将用户添加到 docker 组
Can't add user to docker group
我正在尝试在新系统上设置 docker,当 运行 宁 docker 信息时,我得到:
docker -v
=> Docker version 18.09.5, build e8ff056
docker info
=> 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/info: dial unix
/var/run/docker.sock: connect: permission denied
根据文档,我尝试过:
sudo usermod -a -G docker $USER
其中returns没有输出。当我然后 运行 groups:
groups
=> mark adm cdrom sudo dip plugdev lpadmin sambashare
我可以看到 docker 组存在:
less /etc/group | grep docker
=> docker:x:131:mark
并且可以看到它拥有一个套接字 运行ning,其中错误消息指出:
ls -la /var/run/ | grep docker
=>
drwx------ 5 root root 120 May 25 14:54 docker
-rw-r--r-- 1 root root 5 May 25 14:54 docker.pid
srw-rw---- 1 root docker 0 May 25 14:54 docker.sock
那么,为什么我不能使用 sudo usermod -a -G docker $USER
将自己添加到该组?
您需要重新加载 shell 才能使更改生效。
通常您需要重新启动 shell 进程,甚至可能需要重新启动计算机。
例如
sudo usermod -aG docker $USER
sudo reboot
看到@4Z4T4R的回答点个赞
在不退出 shell
的情况下加载更改
要避免开始新的 shell,您可以 运行。 (似乎并不适用于所有环境)
exec su -l $USER
这将使用加载的更改创建一个新的子shell,并用它替换当前的 shell。
如果没有其他方法适合您。
如果您现在只需要让它工作,另一种方法是更改您的主要组。这只是一个临时解决方案,因为任何新的 shell 您都需要再次应用它。
export my_group=$(id -gn)
newgrp docker
newgrp $my_group
文档
你也可以在这里查看官方文档
https://docs.docker.com/engine/install/linux-postinstall/
在我的例子中,在 Ubuntu 20.04,运行 sudo reboot
在这个命令之后:
$ sudo usermod -aG docker $USER
我真的需要重启我的操作系统(和机器)才能使更改生效。 Restarting/reloading bash 会话未应用新设置。
当然,newgrp docker
在没有 restart/reboot/re-anything 的情况下“即时”执行此操作......但是一旦会话终止,POOF 你就不会不再在 docker
组中。
将此添加为正式答案,因为它真正解决了 OP 和我(相同)的问题。
感谢@Omari Celestine 的建议,但因为我不擅长解释,所以我(也许还有你)需要这个答案提供的字面消歧。
在运行$docker信息之前,请确保docker服务启动。
如果没有,请通过下面的命令运行启动服务。
$服务docker开始
现在您查看 $docker 信息
我正在尝试在新系统上设置 docker,当 运行 宁 docker 信息时,我得到:
docker -v
=> Docker version 18.09.5, build e8ff056
docker info
=> 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/info: dial unix
/var/run/docker.sock: connect: permission denied
根据文档,我尝试过:
sudo usermod -a -G docker $USER
其中returns没有输出。当我然后 运行 groups:
groups
=> mark adm cdrom sudo dip plugdev lpadmin sambashare
我可以看到 docker 组存在:
less /etc/group | grep docker
=> docker:x:131:mark
并且可以看到它拥有一个套接字 运行ning,其中错误消息指出:
ls -la /var/run/ | grep docker
=>
drwx------ 5 root root 120 May 25 14:54 docker
-rw-r--r-- 1 root root 5 May 25 14:54 docker.pid
srw-rw---- 1 root docker 0 May 25 14:54 docker.sock
那么,为什么我不能使用 sudo usermod -a -G docker $USER
将自己添加到该组?
您需要重新加载 shell 才能使更改生效。 通常您需要重新启动 shell 进程,甚至可能需要重新启动计算机。
例如
sudo usermod -aG docker $USER
sudo reboot
看到@4Z4T4R的回答点个赞
在不退出 shell
的情况下加载更改要避免开始新的 shell,您可以 运行。 (似乎并不适用于所有环境)
exec su -l $USER
这将使用加载的更改创建一个新的子shell,并用它替换当前的 shell。
如果没有其他方法适合您。
如果您现在只需要让它工作,另一种方法是更改您的主要组。这只是一个临时解决方案,因为任何新的 shell 您都需要再次应用它。
export my_group=$(id -gn)
newgrp docker
newgrp $my_group
文档
你也可以在这里查看官方文档 https://docs.docker.com/engine/install/linux-postinstall/
在我的例子中,在 Ubuntu 20.04,运行 sudo reboot
在这个命令之后:
$ sudo usermod -aG docker $USER
我真的需要重启我的操作系统(和机器)才能使更改生效。 Restarting/reloading bash 会话未应用新设置。
当然,newgrp docker
在没有 restart/reboot/re-anything 的情况下“即时”执行此操作......但是一旦会话终止,POOF 你就不会不再在 docker
组中。
将此添加为正式答案,因为它真正解决了 OP 和我(相同)的问题。
感谢@Omari Celestine 的建议,但因为我不擅长解释,所以我(也许还有你)需要这个答案提供的字面消歧。
在运行$docker信息之前,请确保docker服务启动。
如果没有,请通过下面的命令运行启动服务。
$服务docker开始
现在您查看 $docker 信息