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。