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


 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐