Docker daemon启动失败:daemon.json中default指令不匹配配置项
Docker Daemon代理配置启动失败问题解决
环境信息
- 操作系统:Fedora 38 x64
- Docker版本:
Client: Version: 24.0.5 API version: 1.43 Go version: go1.20.7 Git commit: %{shortcommit_cli} Built: Sun Aug 27 16:48:05 2023 OS/Arch: linux/amd64 Context: default
问题场景
配置Docker daemon代理时,使用了如下/etc/docker/daemon.json内容:
{ "proxies": { "default": { "httpProxy": "http://127.0.0.1:7890", "httpsProxy": "http://127.0.0.1:7890", "noProxy": "*.test.example.com,127.0.0.0/8" } } }
配置后Docker服务无法启动,执行systemctl status docker返回错误:
[root@fedora ~]# systemctl status docker × docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled) Drop-In: /usr/lib/systemd/system/service.d └─10-timeout-abort.conf Active: failed (Result: exit-code) since Thu 2023-11-16 22:19:04 CST; 10min ago Duration: 6min 52.686s TriggeredBy: × docker.socket Docs: https://docs.docker.com Process: 10463 ExecStart=/usr/bin/dockerd --host=fd:// --exec-opt native.cgroupdriver=systemd $OPTIONS (code=exited, status=1/FAILURE) Main PID: 10463 (code=exited, status=1/FAILURE) CPU: 46ms 11月 16 22:19:04 fedora systemd[1]: docker.service: Scheduled restart job, restart counter is at 3. 11月 16 22:19:04 fedora systemd[1]: Stopped docker.service - Docker Application Container Engine. 11月 16 22:19:04 fedora systemd[1]: docker.service: Start request repeated too quickly. 11月 16 22:19:04 fedora systemd[1]: docker.service: Failed with result 'exit-code'. 11月 16 22:19:04 fedora systemd[1]: Failed to start docker.service - Docker Application Container Engine. 11月 16 22:19:38 fedora systemd[1]: docker.service: Start request repeated too quickly. 11月 16 22:19:38 fedora systemd[1]: docker.service: Failed with result 'exit-code'. 11月 16 22:19:38 fedora systemd[1]: Failed to start docker.service - Docker Application Container Engine.
执行dockerd --debug定位到核心错误:
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives don't match any configuration option: default
官方文档相关说明(翻译后):
daemon.json中proxies下的default键用于配置客户端连接的所有守护进程的代理设置。如果要为单个守护进程配置代理,请使用守护进程的地址替换default键。
解决方案
你的Docker版本(24.0.5)不支持proxies.default这种嵌套结构——该格式是Docker客户端的代理配置格式,并非daemon的配置格式。
正确的Docker daemon代理配置需将参数直接放在daemon.json根节点:
{ "httpProxy": "http://127.0.0.1:7890", "httpsProxy": "http://127.0.0.1:7890", "noProxy": "*.test.example.com,127.0.0.0/8" }
修改配置后,执行以下命令重启服务:
systemctl daemon-reload systemctl restart docker
验证服务状态:
systemctl status docker
关键区别说明
- Docker客户端代理配置才使用
proxies.default结构,通常存放于~/.docker/config.json - Docker daemon代理配置需直接在
/etc/docker/daemon.json根节点定义参数
内容的提问来源于stack exchange,提问作者WestFarmer
相关产品推荐
相关产品推荐

