之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来。
一、问题发现
根据报错信息dial unix /var/run/docker.sock: connect: permission denied
,可以看出,是因为当前用户对docker使用的unix domain socket
文件/var/run/docker.sock
无权限。
于是查看docker.sock
相关信息:
ls -l /var/run/docker.sock
# srw-rw---- 1 root docker 0 /var/run/docker.sock
可以看到,权限模式为srw-rw----
,所属用户为root
,所属组为docker
。因此有权限的用户包括root
用户和docker
组内的用户。
二、使用root用户进行操作
1. 使用sudo操作
sudo docker <args>
2. 切换root用户操作
sudo -i
docker <args>
exit
三、授予docker.sock操作权限
1. 单次授予,重启后失效
sudo chmod 666 /var/run/docker.sock
2. 永久授予
2.1. 将当前用户加入docker组(推荐)
sudo gpasswd -a $USER docker
# 或
sudo usermod -a -G docker $USER
2.2. 向所有用户授予权限
# 查看docker.socket配置
cat /usr/lib/systemd/system/docker.socket
可以看到以下内容
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
其中ListenStream
为unix domain socket
文件路径,SocketMode
为权限模式,SocketUser
为所属用户,SocketGroup
为所属组。
我们只需修改SocketMode
为0666
即可。
修改并保存完成后,重新加载守护并重启socket即可:
sudo systemctl daemon-reload
sudo systemctl restart docker.socket
再次使用docker发现不再报错,重启机器后仍然可用。
- permission connect 笔记 方法 deniedpermission connect denied docker docker permission connect denied permission connect ubuntu denied permission connect笔记 方法 permission connect docker denied permission 39方法denied permission openssh denied please permission权限denied问题 permission stevenlong smith-bing denied permission publickey coding denied