[英]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
不返回 output。当我运行组时:
groups
=> mark adm cdrom sudo dip plugdev lpadmin sambashare
我可以看到一个 docker 组存在:
less /etc/group | grep docker
=> docker:x:131:mark
并且可以看到它拥有一个运行在错误消息中的套接字:
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 答案并大拇指https://stackoverflow.com/a/66297855/7961500
为了避免启动一个新的 shell,你可以运行。 (似乎不适用于所有环境)
exec su -l $USER
这将使用加载的更改创建一个新的子 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
我确实需要重新启动我的操作系统(和机器)才能使更改生效。 重新启动/重新加载 bash 会话未应用新设置。
当然, newgrp docker
做“对飞”不重新启动/重新启动/重新什么把戏......但一旦会话终止,噗你的不是docker
组下去了。
将此添加为正式答案,因为它真正解决了 OP 和我的(相同)问题。
应该归功于@Omari Celestine 的建议,但因为我的解释很烂,我(也许你)需要这个答案提供的字面消歧。
从技术上讲,这是一个两步过程。 跑步
sudo usermod -aG docker $USER
然后,
sg docker -c "bash"
更改 /var/run/docker.sock 文件的权限并重启 docker 进程。
sudo chown jenkins:jenkins /var/run/docker.sock
sudo 644 /var/run/docker.sock
然后,
sudo service docker restart
在运行 $docker info 之前,请确保 docker 服务已启动。
如果不是,请通过运行以下命令来启动服务。
$service 码头工人开始
现在你检查 $docker 信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.