Docker配置

Docker配置

概述

/etc/docker/daemon.json 是 Docker 守护进程(dockerd)的核心配置文件,用于自定义镜像加速、网络、存储、日志、安全等运行参数。默认文件可能不存在,需手动创建,修改后需重启 Docker 服务生效。

基本规则

  • 严格遵循 JSON 语法(键值对双引号、逗号分隔)
  • 修改后执行 systemctl daemon-reload && systemctl restart docker
  • 验证配置:docker info 查看配置是否生效

镜像加速配置

解决拉取镜像慢的问题:

{
  "registry-mirrors": [
    "https://xxxx.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
参数 类型 说明
registry-mirrors 数组 镜像仓库加速地址列表

网络配置

自定义 Docker 网络参数:

{
  "bip": "172.31.0.1/16",
  "default-address-pools": [
    {
      "base": "172.32.0.0/16",
      "size": 24
    }
  ],
  "dns": ["223.5.5.5", "8.8.8.8"],
  "dns-search": ["docker.internal"],
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8::/64",
  "port-range": "30000-32767"
}
参数 类型 说明
bip 字符串 bridge 网络网关和子网
default-address-pools 数组 自定义网络地址池(避免网段冲突)
dns 数组 容器默认 DNS 服务器
dns-search 数组 DNS 搜索域
ipv6 布尔 启用 IPv6 支持
fixed-cidr-v6 字符串 IPv6 固定子网
port-range 字符串 端口映射范围

存储配置

自定义存储驱动、数据目录和日志限制:

{
  "data-root": "/data/docker",
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.size=100G"],
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
参数 类型 说明
data-root 字符串 Docker 数据存储根目录(默认 /var/lib/docker
storage-driver 字符串 存储驱动(推荐 overlay2
storage-opts 数组 存储驱动额外参数
max-concurrent-downloads 整数 同时下载镜像最大线程数
max-concurrent-uploads 整数 同时上传镜像最大线程数
log-driver 字符串 容器日志驱动
log-opts 对象 日志驱动参数

安全配置

限制权限、启用 TLS、信任私有仓库:

{
  "insecure-registries": ["192.168.1.100:5000"],
  "allow-nondistributable-artifacts": ["192.168.1.100:5000"],
  "tls": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem",
  "tlsverify": true,
  "live-restore": true
}
参数 类型 说明
insecure-registries 数组 信任的非 HTTPS 镜像仓库
allow-nondistributable-artifacts 数组 允许推送非分布式镜像
tls 布尔 启用 TLS 认证
tlscacert 字符串 TLS 根证书路径
tlscert 字符串 TLS 客户端证书路径
tlskey 字符串 TLS 客户端密钥路径
tlsverify 布尔 验证服务端证书
live-restore 布尔 Docker 重启时保持容器运行

资源限制配置

限制 Docker 占用的系统资源:

{
  "default-shm-size": "2G",
  "oom-score-adjust": -1000,
  "max-pids": 10000,
  "memory-limit": "16G",
  "cpu-shares": 2048
}
参数 类型 说明
default-shm-size 字符串 容器默认共享内存大小
oom-score-adjust 整数 OOM 优先级(数值越低越不易被杀)
max-pids 整数 所有容器最大 PID 总数
memory-limit 字符串 Docker 整体内存限制
cpu-shares 整数 Docker 整体 CPU 权重

其他实用配置

{
  "experimental": true,
  "features": {
    "buildkit": true
  },
  "labels": ["env=production", "owner=devops"],
  "log-level": "warn"
}
参数 类型 说明
experimental 布尔 启用实验性特性
features 对象 启用特定特性(如 Buildkit)
labels 数组 为守护进程添加标签
log-level 字符串 日志级别(debug/info/warn/error/fatal)

完整配置示例

{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.m.ixdev.cn"
  ],
  "data-root": "/data/docker",
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "dns": ["223.5.5.5", "8.8.8.8"],
  "insecure-registries": ["192.168.1.100:5000"],
  "live-restore": true,
  "default-shm-size": "2G",
  "max-concurrent-downloads": 10,
  "experimental": true
}

常见问题与注意事项

配置文件格式错误

# 验证 JSON 格式
jq . /etc/docker/daemon.json

# 查看 Docker 启动错误
systemctl status docker
journalctl -u docker -f

配置不生效

  1. 确认配置文件路径正确:/etc/docker/daemon.json
  2. 重启 Docker 服务:systemctl restart docker
  3. 通过 docker info 验证配置是否生效

镜像加速不生效

docker info | grep -A 5 "Registry Mirrors"

修改数据目录后容器丢失

修改 data-root 后,原 /var/lib/docker 下的数据不会自动迁移,需手动迁移:

systemctl stop docker
rsync -avxP /var/lib/docker/ /data/docker/
systemctl start docker

参考链接