安装Docker时错误提示 "could not change group /var/run/docker.sock to docker: group docker not found"的解决方案

安装docker时报错如下

[root@localhost docker]# dockerd &
[1] 71684
[root@localhost docker]# INFO[2022-02-24T18:48:05.404654897+08:00] Starting up                                  
failed to start containerd: exec: "containerd": executable file not found in $PATH
 
[1]+  退出 1                dockerd

排查过程

问题定位

百度上有说linux内核版本不支持、有说/etc/docker/deamon.json格式不正确,/etc/systemd/system/docker.server配置不正确、etc/sysconfig/docker配置不正确的。各种复制粘贴的文章,眼花缭乱,就是解决不了问题。

通过MS BING搜索异常日志,在github上找到一个相同提示的网页 https://github.com/docker/for-linux/issues/705 通过对问题的分析,大概原因及方法如下:

然后排查现有服务器,使用 whereis containerd 命令查看containerd位置,发现在 /usr/bin/containerd

使用cat /etc/sudoers | grep secure_path命令查看/etc/sudoerssecure_path路径配置,发现是包含containerd位置的。

20220225100856.png

问题思考

经过上述步骤,我们可以确定的是服务器环境的containerd/usr/bin目录中,而/usr/bin又配置在了$PATH路径中。启动dockerd命令的错误提示是Docker无法启动containerd,可执行的文件在$PATH中找不到。 难道是文件权限问题,所以先通过ls -l /usr/bin/containerd查看下containerd的权限20220225095332.png

OMG, containerd文件只有r权限,没有执行权限。问题基本上定位了,是因为containerd文件没有执行权限导致的错误

问题解决

通过使用chmod a+x containerd 给containerd 文件添加执行权限,然后再继续启动Docker看下日志,发现runc文件也是同样的问题。20220225095723.png

于是我们给docker相关的文件添加执行权限,然后重新启动dockerd &

 
[root@localhost bin]# chmod a+x containerd-shim
 
[root@localhost bin]# chmod a+x ctr
 
[root@localhost bin]# chmod a+x docker
 
[root@localhost bin]# chmod a+x dockerd
 
[root@localhost bin]# chmod a+x docker-init
 
[root@localhost bin]# chmod a+x runc
 
[root@localhost bin]# chmod a+x docker-proxy
 
[root@localhost bin]# dockerd &

终于,docker启动正常了,使用docker info 查看docker信息

20220225100442.png

原因分析

导致问题的原因是 /usr/bin 路径下,docker相关的可执行文件没有执行权限。 docker的安装是通过可执行特定版本的可执行镜像文件进行的(没有通过yum命令拉去镜像)。 反向追溯这些可执行文件来源,发现是要求解压后通过 sudo cp docker/* /usr/bin 命令将文件复制到$PATH下,那么问题就出在docker目录下的文件身上。 细问应该是部署人员从其他服务器上下载的这些文件,然后通过fpt将可执行文件直接上传后没有修改文件权限。

posted @ 2022-06-17 15:34  xiaohaoge  阅读(2719)  评论(0编辑  收藏  举报