安装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/sudoers
中secure_path
路径配置,发现是包含containerd位置的。
问题思考
经过上述步骤,我们可以确定的是服务器环境的containerd
在/usr/bin
目录中,而/usr/bin
又配置在了$PATH
路径中。启动dockerd命令的错误提示是Docker无法启动containerd,可执行的文件在$PATH中找不到。 难道是文件权限问题,所以先通过ls -l /usr/bin/containerd
查看下containerd的权限
OMG, containerd文件只有r
权限,没有执行权限。问题基本上定位了,是因为containerd文件没有执行权限导致的错误
问题解决
通过使用chmod a+x containerd
给containerd 文件添加执行权限,然后再继续启动Docker看下日志,发现runc
文件也是同样的问题。
于是我们给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信息
原因分析
导致问题的原因是 /usr/bin 路径下,docker相关的可执行文件没有执行权限。 docker的安装是通过可执行特定版本的可执行镜像文件进行的(没有通过yum命令拉去镜像)。 反向追溯这些可执行文件来源,发现是要求解压后通过 sudo cp docker/* /usr/bin
命令将文件复制到$PATH下,那么问题就出在docker目录下的文件身上。 细问应该是部署人员从其他服务器上下载的这些文件,然后通过fpt将可执行文件直接上传后没有修改文件权限。