最近服务器重启以后docker启动失败了,使用以下命令查看 Docker 的日志文件以获取更详细的错误信息。
bash
journalctl -u docker.service -e
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ dockerd[4379]: Status: unknown flag: --graph
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ dockerd[4379]: See 'dockerd --help'., Code: 125
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ systemd[1]: Failed to start Docker Application Container Engine.
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ systemd[1]: Unit docker.service entered failed state.
9月 05 10:50:06 iZj6c94a19bsvkhti6zw6oZ systemd[1]: docker.service failed.
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: docker.service holdoff time over, scheduling restart.
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: Stopped Docker Application Container Engine.
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: start request repeated too quickly for docker.service
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: Failed to start Docker Application Container Engine.
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: Unit docker.service entered failed state.
9月 05 10:50:09 iZj6c94a19bsvkhti6zw6oZ systemd[1]: docker.service failed.
错误原因:
从提供的日志信息中,可以看到 Docker 服务启动失败的主要原因是 --graph
这个未知的标志(flag)。这个标志在较新版本的 Docker 中已经被废弃,并且不再被支持。Docker 现在使用 --data-root
标志来指定 Docker 数据的存储位置。
解决方案:
编辑 Docker 服务文件:
编辑 /etc/systemd/system/docker.service.d/ 目录下的 devicemapper.conf 文件,找到包含 --graph 的行,并将其替换为 --data-root。
bash
ExecStart=/usr/bin/dockerd --graph=/home/www1/docker/lib/docker
将其更改为:
bash
ExecStart=/usr/bin/dockerd --data-root=/home/www1/docker/lib/docker
重新加载 systemd 配置:
在修改配置文件后,需要重新加载 systemd 的配置,以确保更改生效:
bash
sudo systemctl daemon-reload
重启 Docker 服务:
bash
sudo systemctl restart docker
检查 Docker 服务状态:
bash
sudo systemctl status docker