最近在进行Docker环境迁移时,用二制对Docker进行了重新安装,一切配置好之后,启动Docker时,服务启动不起来,使用journalctl -xe命令查看,报出以下错误:
[root@app docker]# journalctl -xe
8月 25 14:25:46 app dockerd[3269]: Status: unknown flag: --graph
8月 25 14:25:46 app dockerd[3269]: See 'dockerd --help'., Code: 125
--graph参数不对的问题 。
经过查找资料发现,Docker在较早的版本中使用了--graph标志来指定Docker的存储驱动和根目录,但在后续版本中,这个标志已被弃用,取而代之的是--data-root标志。
通过docker- version命令分别查看了环境迁移前的版为:docker-20.10.1
环境迁移后的版本为:26.1.1。如下所示:
[root@app system]# docker version
Client:
Version: 26.1.1
API version: 1.45
Go version: go1.21.9
Git commit: 4cf5afa
Built: Tue Apr 30 11:46:57 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.1.1
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: ac2de55
Built: Tue Apr 30 11:48:27 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.9
GitCommit: 1c90a442489720eec95342e1789ee8a5e1b9536f
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
按照要求,把docker.service启动配置文件中的--graph参数修改为--data-root参数,如下所示:
图中标红部分,把--graph这一行注掉,换成了--date-root,图中标绿部分。
再重新加载和启动docker,docker成功被启动。如下所示:
重新加载:
[root@app system]# systemctl daemon-reload
启动docker:
[root@app system]# systemctl start docker
查看docker服务状态:
[root@app system]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since 日 2024-08-25 14:45:31 CST; 45min ago
Docs: https://docs.docker.com
Main PID: 3887 (dockerd)
CGroup: /system.slice/docker.service
├─3887 /app/docker/bin/dockerd --data-root /app/docker/data/lib/docker --userland-proxy-path=/app/docker/bin/docker-proxy
└─3894 containerd --config /var/run/docker/containerd/containerd.toml
Active:这个状态值已经running,说明docker的--data-root参数已经生效,并且docker服务已成功启动。