导读:本期聚焦于广州SEO公司创作的《Docker 的 daemon.json 配置项有哪些?完整参数参考与示例解析》,敬请观看详情。修改 daemon.json 后 Docker 服务无法启动,问题往往出在 JSON 语法或参数拼写。这份配置参考从文件位置、核心参数到镜像加速、日志驱动、存储驱动、网络配置逐项说明,并给出了可直接使用的完整示例。重点覆盖 registry-mirrors、data-root、log-driver、storage-driver、insecure-registries、dns、default-address-pools 等高频配置,同时提醒 JSON 不允许注释、修改后必须重启 dockerd 以及如何通过 docker info 验证生效。内容兼顾开发、测试与生产环境,帮助读者避免配置错误导致的服务中断。

daemon.json 是 Docker 守护进程 dockerd 的核心配置文件,几乎所有需要长期生效的引擎参数都可以集中在这个 JSON 文件中调整。它定义了镜像下载加速、存储目录、日志驱动、容器网络等底层行为,修改后会作用于整台主机上的所有容器。与临时追加命令行参数相比,daemon.json 便于版本管理和多机同步,是运维标准化的重要一环。

Docker 的 daemon.json 配置项有哪些?完整参数参考与示例解析

不过 daemon.json 对语法要求极严格,一个多余的逗号、缺失的双引号甚至注释都会导致 dockerd 启动失败。因此先理解文件位置、参数含义和验证方式,再动手修改配置文件,可以避免很多不必要的停机。

daemon.json 文件位置与基本语法

Linux 系统中 daemon.json 通常位于 /etc/docker/daemon.json,如果文件不存在可以直接创建,dockerd 启动时会自动读取。Windows 下的路径则是 C:\ProgramData\Docker\Config\daemon.json,注意该路径中的反斜杠是 Windows 标准分隔符,修改后需要重启 Docker Desktop 或 Docker Engine 服务。macOS 用户通过 Docker Desktop 的 Preferences 界面修改通常更方便,但底层也是写入类似路径的配置文件。

这个文件必须是一个合法的 JSON 对象,所有键名和字符串值都要用英文双引号包裹。JSON 标准不支持注释,因此不要像某些配置文件那样使用 # 或 // 添加说明,否则 dockerd 解析时会直接报错。同时对象或数组的最后一个元素后面不能追加逗号,这是新手最容易犯的错误。例如下面写法是错误的:

{
  "registry-mirrors": ["https://mirror.ipipp.com"],
}

修改配置后必须重启 Docker 服务才能生效,Linux 下通常执行 systemctl restart docker 或 service docker restart。重启成功后可以通过 docker info 命令查看配置是否被正确加载,输出中会包含 Registry Mirrors、Storage Driver、Logging Driver 等字段。

还需要注意配置优先级:如果 dockerd 命令行参数和 daemon.json 中同时设置了同一个参数,一般情况下命令行参数优先,但有些参数冲突时 dockerd 会直接拒绝启动。因此建议统一使用 daemon.json 管理长期配置,减少混乱。

镜像与存储核心参数

镜像加速是 daemon.json 里最常用的配置之一,通过 registry-mirrors 数组可以指定多个镜像仓库加速地址。Docker 拉取公共镜像时会依次尝试这些地址,如果第一个失败会自动切换下一个。配置示例:

{
  "registry-mirrors": [
    "https://mirror.ipipp.com",
    "https://mirror.internal.com"
  ]
}

另一个高频参数是 insecure-registries,它允许 Docker 从使用 HTTP 或自签名证书的私有仓库拉取镜像。生产内网中很多 Harbor 或 Nexus 仓库没有配置 HTTPS,就必须把仓库地址加入这个数组。例如:

{
  "insecure-registries": [
    "192.168.1.100:5000",
    "harbor.ipipp.com"
  ]
}

存储方面,data-root 用来修改 Docker 数据存储根目录,默认位于 /var/lib/docker。如果系统盘空间不足,可以把数据迁移到大容量磁盘。修改前需要先停止 Docker 服务,移动原目录数据,再修改配置并启动。注意该参数在新版本中替代了旧版的 graph 参数。存储驱动则由 storage-driver 指定,常见值为 overlay2,大多数现代 Linux 发行版默认支持,不要随意改成 vfs,否则性能和空间占用会显著变差。

网络与日志配置参数

容器网络相关的配置往往容易被忽略,但对多容器编排和固定 IP 需求影响很大。default-address-pools 允许自定义 Docker 创建网络时使用的地址池,避免与公司内网网段冲突。例如公司内网已经占用了 172.17.0.0/16,可以调整默认池:

{
  "default-address-pools": [
    {
      "base": "10.20.0.0/16",
      "size": 24
    }
  ]
}

这里 base 是地址池网段,size 表示每个网络的子网掩码长度,24 意味着每个新建网络可获得一个 /24 子网。bip 和 fixed-cidr 也可以手动指定默认网桥的地址和子网,例如 "bip": "10.10.0.1/24"。同时 dns 和 dns-search 数组可以为容器设置默认 DNS 服务器和搜索域,适合内网自定义域名解析。

日志配置由 log-driver 和 log-opts 控制。Docker 默认使用 json-file 驱动,容器日志会写入主机文件,长期运行可能占满磁盘。通过 log-opts 限制单个日志文件大小和文件数量,可以自动轮转控制磁盘占用:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

上面的配置表示每个容器日志文件达到 10MB 后轮转,最多保留 3 个文件。对于日志集中收集的场景,也可以把 log-driver 改为 syslog、journald 或 fluentd,但需要确保对应日志服务已可用。

完整配置示例与验证

综合前面提到的几类参数,以下是一份可参考的 daemon.json 完整示例。它同时配置了镜像加速、私有仓库、数据目录、存储驱动、网络地址池和日志轮转,适合大多数 Linux 服务器:

{
  "registry-mirrors": [
    "https://mirror.ipipp.com",
    "https://mirror.internal.com"
  ],
  "insecure-registries": [
    "192.168.1.100:5000",
    "harbor.ipipp.com"
  ],
  "data-root": "/data/docker",
  "storage-driver": "overlay2",
  "default-address-pools": [
    {
      "base": "10.20.0.0/16",
      "size": 24
    }
  ],
  "dns": [
    "10.20.0.2",
    "114.114.114.114"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

保存后执行 systemctl restart docker 重启服务,然后使用 docker info 检查输出中的 Registry Mirrors、Insecure Registries、Storage Driver、Logging Driver 等字段是否与配置一致。如果服务无法启动,可以运行 journalctl -u docker 查看错误日志,通常能看到具体哪一行 JSON 语法出错。

修改前可以在测试环境手动运行 dockerd --debug 并观察启动输出,提前发现配置错误。对于 Windows 和 macOS 的 Docker Desktop,修改 daemon.json 后可以在设置界面找到重启按钮,或通过命令行重启 Docker 服务。配置验证通过后建议将 daemon.json 纳入版本控制,方便回滚和审计。

Docker daemon配置daemon.json参数容器运行时优化修改时间:2026-10-05 22:41:57

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/1005/66177.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。