Windows系统安装Docker Desktop配置daemon.json不生效问题解决

Windows系统安装Docker Desktop配置daemon.json不生效问题解决

背景介绍

在使用Windows系统安装Docker Desktop的过程中,许多开发者会遇到配置文件daemon.json不生效的问题。虽然在配置文件中添加了各种设置,但在实际运行中却未能起到预期效果。本文将详细记录我在排查这一问题过程中遇到的挑战和最终找到的解决方案。

failed to do request: Head "https://192.168.201.23:80/v2/xxx/xxx-auth-xxx/blobs/sha256:xxxxx": EOF

大模型 都不知道这个到底怎么回事

claude、Deepseek、qianwen 全都再反复建议 重启、卸载、重装desktop

有的建议去wsl里面改。改完重启配置文件没有了,根本没用。

问题现象

在Windows系统上安装Docker Desktop后,我尝试通过配置daemon.json文件来调整Docker的运行参数,包括:

  • 镜像仓库地址配置(registry-mirrors)
  • 不安全仓库配置(insecure-registries)
  • 构建垃圾回收策略等

然而,在重启Docker Desktop服务后,这些配置都没有生效,仍然使用默认设置。

排查过程

第一步:确认配置文件位置

首先,我确认了daemon.json文件应该放置的位置。根据Docker文档和实际测试,Windows系统上的正确位置应该是:

复制代码
C:\Users\<用户名>\.docker\daemon.json

第二步:检查已有的配置文件

通过查看文件内容,我发现已经存在一个daemon.json文件:

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "insecure-registries": [
    "10.124.142.91",
    "10.12.49.246",
    "10.124.4.241",
    "192.168.201.23"
  ]
}

这个文件看起来配置是正确的,但为何没有生效呢?

第三步:尝试多种解决方案

为了解决这个问题,我进行了大量尝试:

  1. UI界面修改配置:尝试在Docker Desktop的图形界面中修改设置
  2. 重新安装Docker Desktop:卸载后重新安装
  3. 更改WSL模式:从WSL 2切换到WSL 1或相反
  4. 在WSL环境中修改配置:在WSL2中尝试修改配置文件
  5. 手动重启Docker服务
  6. 修改防火墙设置

所有这些方法都未能解决问题,配置仍然无效。

第四步:深入研究和定位问题

经过反复研究和测试,我终于发现了问题的关键所在:

问题根源在于:Docker Desktop在Windows系统中读取daemon.json时,只识别位于用户目录下的windows-daemon.json文件,而不是标准位置的daemon.json文件。

解决方案

核心发现

当我仔细观察系统中Docker相关的配置时,发现了一个关键性的细节:Docker Desktop的某些功能在特定情况下会查找名为windows-daemon.json的配置文件,而不仅仅是标准的daemon.json

实际解决步骤

  1. 修改windows-daemon.json文件

    C:\Users<用户名>.docker\下有一个名为windows-daemon.json的配置文件,把原有的配置复制进去。

  2. 配置文件内容

    json 复制代码
    {
      "builder": {
        "gc": {
          "defaultKeepStorage": "20GB",
          "enabled": true
        }
      },
      "experimental": false,
      "insecure-registries": [
        "10.124.142.91:80",
        "10.172.49.246:80",
        "10.189.4.241:80",
        "192.168.201.23:80"
      ]
    }
  3. 重启Docker Desktop

    完成配置后,完全关闭Docker Desktop并重新启动。

结论

这个看似简单的问题其实揭示了Windows环境下Docker Desktop实现的一个特殊细节。尽管官方文档和大多数教程都说配置文件应该放在

C:\ProgramData\Docker\下面

或者%USERPROFILE%\.docker\daemon.json位置,但实际上的Docker Desktop在Windows平台上实际上会优先查找一个名为windows-daemon.json的特定文件。

相关推荐
正经教主2 分钟前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
初圣魔门首席弟子26 分钟前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CodeStats2 小时前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker
kingbal2 小时前
Windows:flutter环境搭建
windows·flutter
ai产品老杨3 小时前
突破安防碎片化:基于 Docker 与边缘计算的 AI 视频智能化中台,如何通过 GB28181/RTSP 统一接入与全套源码交付实现二次开发自由?
人工智能·docker·边缘计算
“码”力全开3 小时前
解耦异构设备:基于 Docker 与边缘计算的 GB28181/RTSP 统一流媒体平台架构演进(全源码交付)
docker·架构·边缘计算
CodeKwang3 小时前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
日取其半万世不竭3 小时前
Memos 私人碎片笔记怎么搭?Docker 加 Caddy 一小时跑起来
笔记·docker·容器
vx-Biye_Design4 小时前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis
gc_22994 小时前
学习在Windows中基于Docker部署Dify的步骤
windows·docker·dify