直接修改 /etc/docker/daemon.json 是调整 docker 守护进程全局行为最稳定、最推荐的方式,支持镜像加速、日志限制、dns、data-root、storage-driver、bip、proxies 等核心配置,修改后需验证格式并重启服务生效。

确认文件存在并规范创建
如果 `/etc/docker/daemon.json` 不存在,不要跳过这步——手动创建一个空 JSON 对象文件:
- 运行
sudo mkdir -p /etc/docker确保目录存在 - 执行
sudo touch /etc/docker/daemon.json创建文件 - 用
sudo nano /etc/docker/daemon.json编辑,初始内容必须是合法 JSON,哪怕只有{} - 避免使用中文标点、尾逗号、注释(JSON 不支持)
常用全局参数及典型配置
以下参数按高频使用排序,每个都带明确作用和安全建议:
-
镜像加速(registry-mirrors):解决国内拉取慢或失败问题
示例:"registry-mirrors": ["https://d8b3zdiw.mirror.aliyuncs.com"]
注意:多个地址用英文逗号分隔,必须是 HTTPS 协议(除非同时配了insecure-registries) -
日志大小限制(log-driver + log-opts):防磁盘被容器日志打满
示例:"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-files": "5"}
推荐设max-size(如 10m~100m),max-files控制轮转个数(3~10 较稳妥) -
DNS 设置(dns):避免容器内 DNS 解析继承宿主机不可靠配置
示例:"dns": ["223.5.5.5", "114.114.114.114"]
务必显式指定,不依赖/etc/resolv.conf -
数据根目录(data-root):把镜像、容器、卷等移到大容量独立磁盘
示例:"data-root": "/data/docker"
需提前创建目录、赋权(sudo chown root:root /data/docker),重启前确保旧路径无正在运行的容器
进阶参数需注意依赖与兼容性
这些参数影响底层行为,修改前必须验证系统支持条件:
-
存储驱动(storage-driver + storage-opts):
"storage-driver": "overlay2"是当前主流选择,但要求内核 ≥ 4.0 且文件系统为 ext4/xfs;若强制启用 metacopy,需确认内核版本足够新(≥ 5.11) -
网络桥接(bip):自定义 docker0 网段,避免与公司内网冲突
示例:"bip": "172.29.0.1/16"
掩码长度决定可用 IP 数量(/16 ≈ 6.5 万个地址,/24 ≈ 254 个) -
代理设置(proxies):企业内网必须访问外网时使用
示例:"proxies": {"default": {"httpsProxy": "http://proxy.example.com:8080"}}noproxy必须包含localhost,127.0.0.1及内部服务域名
修改后必须验证与生效
改完不重启 = 白改,但重启前要留退路:
- 先运行
sudo docker info | grep -E "(Storage|Registry|DNS|Data Root|Logging)"粗略核对关键项是否已加载 - 再执行
sudo systemctl restart docker;若失败,立即查日志:sudo journalctl -u docker --since "1 minute ago" - 启动失败常见原因:JSON 格式错误、参数值类型不符(如
bip写成字符串但缺 CIDR)、data-root目录权限不对、storage-driver与当前内核不兼容 - 出问题可快速回退:
sudo mv /etc/docker/daemon.json.bak /etc/docker/daemon.json && sudo systemctl restart docker











