1.查看docker用户组

cat /etc/group | grep 'docker'

2. 添加当前用户加入docker用户组

sudo gpasswd -a ${USER} docker

${USER}就可以帮我们获取到当前登录的用户

3.更新docker组的信息

newgrp docker

 可再次查看docker用户组,可以看到当前用户已经成功添加到docker用户组中。

执行完该命令之后,就可以在当前终端中,不适用sudo执行docker相关命令了。

newgrp命令用于启动一个新的shell,将其用户组更改为指定的组(在这种情况下是docker组),并且用户组成员身份也被更改为新的组。这使得用户可以在不注销的情况下切换到另一个组的身份,但这种更改只在当前shell会话中有效,关闭终端后将会失效。

 因为只在当前会话有效,所以执行完该命令后,我们在当前终端中实行docker的命令,不需要添加sudo,但是如果打开一个新的终端,执行docker images还是会提示权限不足。

如果关闭该终端窗口,会提示有正在执行的进程,关闭会杀死该进程。

上网查了资料,如何关闭了终端或者重新登录后,仍然可以不使用sudo执行docker命令,尝试了注销再次重新登录,重启虚拟机,都没有用。

可以执行下面的操作:

4.查看/var/run/docker.sock文件的权限

ll /var/run/docker.sock

输出如下结果:

srw-rw-rw- 1 root docker 0 2月  21 12:10 /var/run/docker.sock=

5.修改/var/run/docker.sock文件的权限

sudo chmod o+rw /var/run/docker.sock

该命令的作用是修改/var/run/docker.sock文件的权限,使得其他用户(o代表其他用户)拥有对该文件的读(r)和写(w)权限。通常情况下,Docker守护进程将该文件的权限设置为仅允许Docker守护进程以及属于docker组的用户访问。通过这个命令,您向其他用户授予了对Docker套接字的读写权限,这意味着其他用户可以通过该套接字与Docker守护进程进行通信,而不需要通过sudo命令获取root权限。

 修改完文件的权限之后,在当前终端会话中、新的终端会话中、注销重新登录,打开新的终端。都可以不使用sudo执行docker命令了。

但是重启虚拟机之后,就失效了,执行docker相关的命令还是权限不足

要么添加sudo

要么重复上面操作2,3 或 操作5。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐