服务 docker 启动失败(守护程序不是 docker 命令)

service docker start fails (daemon is not a docker command)

我尝试重新启动后遇到问题 docker。自那时候起, 服务 docker 开始 returns "start: Job failed to start".

这可能在我更改后就开始了 docker.conf。我尝试使用命令

重新上传它
wget -O /etc/init/docker.conf https://raw.githubusercontent.com/docker/docker/master/contrib/init/upstart/docker.conf

然而,我没能解决这个问题。

cat /var/log/upstart/docker.log returns:

Waiting for /var/run/docker.sock
docker: 'daemon' is not a docker command. See 'docker --help'.
Waiting for /var/run/docker.sock
docker: 'daemon' is not a docker command. See 'docker --help'.
Waiting for /var/run/docker.sock
docker: 'daemon' is not a docker command. See 'docker --help'.

任何帮助将不胜感激。

您可能安装了旧版本的 docker; docker daemon 子命令是 added in docker 1.8。在此之前,守护进程是使用 -d / --daemon 选项 (docker -d) 启动的。

您下载的 upstart-configuration 版本适用于 current docker 版本;例如,对于 docker 的旧版本,请务必下载与您安装的版本相匹配的版本; https://raw.githubusercontent.com/docker/docker/v1.7.1/contrib/init/upstart/docker.conf

我建议升级到 docker 的更新版本,因为早于 1.8 的版本现在已经很旧了(在 Docker 术语中)

就我而言,升级到 docker 19.03.5 后,出现了这个错误。 手动启动时 /usr/bin/dockerd 一切正常,但通过 systemctl start docker 失败。

查看journalctl -xe我发现日志:

docker: 'daemon' is not a docker command.

但是 docker.service 文件是正确的,开始于 /usr/bin/dockerd

我花了一些时间才弄清楚之前的安装有一个配置文件:/etc/systemd/system/docker.service.d/override.conf 将 docker 守护进程启动命令 (/usr/bin/dockerd) 替换为其他不推荐使用的语法。

在这种情况下,您可以删除 override.conf 文件以允许 docker 启动:

rm /etc/systemd/system/docker.service.d/override.conf
systemctl daemon-reload
systemctl start docker

希望对您有所帮助