Q:首先说一下问题是怎么出现的?
A:Docker的守护线程绑定的是unix socket,而不是TCP端口,这个套接字默认属于root,其他用户可以通过sudo去访问这个套接字文件。所以docker服务进程都是以root账户运行。
解决的方式是创建docker用户组,把应用用户加入到docker用户组里面。只要docker组里的用户都可以直接执行docker命令。
可以先通过指令查看是否有用户组:
cat /etc/group | grep docker
如果有就跳过第一步!
第一步:创建docker用户组
sudo groupadd docker
第二步:用户加入到用户组
sudo usermod -aG docker 用户名
第三步:检查是否有效
cat /etc/group
第四步:重启docker-daemon
sudo systemctl restart docker
第五步:给docker.sock添加权限
sudo chmod a+rw /var/run/docker.sock