sudo systemctl启动Docker失败,仅能手动启动Docker Daemon的解决方法
恢复systemctl启动Docker服务的方法
问题描述
背景
清理了已增长至3TB的Docker容器缓存(/var/lib/docker/overlay2)后,Docker CLI无法使用,遂彻底卸载Docker和Containerd。按官方文档重新安装Docker组件后,使用标准命令sudo systemctl [re]start docker启动服务失败,报错:
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.
临时状态
目前仅能通过手动启动Docker Daemon(如sudo dockerd --debug &),Daemon调试输出无异常。
调试信息
执行systemctl status docker.service输出:
$ systemctl status docker.service × docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/docker.service.d └─version.conf Active: failed (Result: exit-code) since Thu 2024-03-21 11:57:51 UTC; 13min ago TriggeredBy: × docker.socket Docs: https://docs.docker.com Process: 56625 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE) Main PID: 56625 (code=exited, status=1/FAILURE) CPU: 69ms
执行sudo journalctl -xeu docker.service输出关键错误:
Mar 21 12:19:05 build-srv-3-fi dockerd[123185]: invalid DOCKER_MIN_API_VERSION: minimum supported API version is 1.24: 1.22
需求
恢复使用systemctl启动Docker服务的标准方式,因为Anchore Grype依赖的Skopeo需要该方式启用相关功能。
解决方案
从日志错误可知,问题源于设置了低于Docker最低支持版本的DOCKER_MIN_API_VERSION环境变量,且该配置存在于Docker服务的自定义Drop-In文件中。
修改Docker服务配置文件
打开/etc/systemd/system/docker.service.d/version.conf文件,找到设置DOCKER_MIN_API_VERSION的行:- 将值修改为
1.24或更高版本; - 若无需强制设置最低API版本,可直接删除该行。
- 将值修改为
重新加载systemd配置
执行命令使新配置生效:sudo systemctl daemon-reload启动Docker服务
执行标准启动命令:sudo systemctl start docker验证服务状态
检查服务是否正常运行:sudo systemctl status docker
内容的提问来源于stack exchange,提问作者mirekphd
相关产品推荐
相关产品推荐

