Docker配置

Docker配置

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

一、配置文件基础说明

1. 文件格式

  • 严格遵循 JSON 语法(键值对、逗号分隔、字符串用双引号)。

  • 注释:JSON 本身不支持注释,若需添加注释,需使用工具(如 jq)处理,或部署时移除注释。

  • 生效方式:修改后执行 systemctl daemon-reload && systemctl restart docker 重启 Docker 服务。

  • 验证配置:docker info 可查看配置是否生效(如镜像加速地址、存储驱动等)。

2. 默认配置路径

  • Linux:/etc/docker/daemon.json

  • Windows:C:\ProgramData\docker\config\daemon.json

  • macOS(Docker Desktop):通过 GUI 配置(偏好设置 → Docker Engine),底层对应 ~/.docker/daemon.json

二、核心配置参数详解(按功能分类)

1. 镜像加速配置(最常用)

解决 Docker 拉取镜像慢的问题,优先配置国内镜像源。

参数 类型 说明 示例
registry-mirrors 数组(字符串) 镜像仓库加速地址列表,按顺序优先级匹配 阿里云、网易云、Docker 中国官方加速

示例配置

{
  "registry-mirrors": [
    "https://xxxx.mirror.aliyuncs.com",  // 阿里云专属加速(需登录阿里云容器镜像服务获取)
    "https://hub-mirror.c.163.com",      // 网易云加速(公开)
    "https://docker.mirrors.ustc.edu.cn" // 中科大加速(公开)
  ]
}

2. 网络配置

自定义 Docker 网络相关参数(如默认网段、端口映射范围、DNS 等)。

参数 类型 说明 示例
bip 字符串 桥接网络(bridge)的默认网关和子网 "bip": "172.17.0.1/16"(默认是 172.17.0.1/16)
default-address-pools 数组 自定义 Docker 网络地址池(避免与内网网段冲突) 见下方示例
dns 数组(字符串) 容器默认 DNS 服务器列表 "dns": ["223.5.5.5", "8.8.8.8"](阿里云 DNS + Google DNS)
dns-search 数组(字符串) DNS 搜索域(容器内解析域名时自动拼接) "dns-search": ["docker.internal", "company.com"]
ipv6 布尔值 是否启用 IPv6 支持 "ipv6": true
fixed-cidr-v6 字符串 IPv6 固定子网 "fixed-cidr-v6": "2001:db8::/64"
port-range 字符串 允许 Docker 映射的端口范围(默认 49153-65535) "port-range": "30000-32767"

示例配置(解决网段冲突)

{
  "bip": "172.31.0.1/16",  // 自定义 bridge 网络网关和子网
  "default-address-pools": [
    {
      "base": "172.32.0.0/16",
      "size": 24
    },
    {
      "base": "172.33.0.0/16",
      "size": 24
    }
  ],
  "dns": ["223.5.5.5", "8.8.8.8"]
}

3. 存储配置

自定义 Docker 存储驱动、数据存储路径、镜像和容器限制等。

参数 类型 说明 示例
data-root 字符串 Docker 数据存储根目录(默认 /var/lib/docker "data-root": "/data/docker"(迁移 Docker 数据到 /data 分区)
storage-driver 字符串 存储驱动(推荐 overlay2,Docker 18.09+ 默认) "storage-driver": "overlay2"
storage-opts 数组(字符串) 存储驱动额外参数(如 overlay2 的日志大小限制) "storage-opts": ["overlay2.override_kernel_check=true", "overlay2.size=100G"]
max-concurrent-downloads 整数 同时下载镜像的最大线程数(默认 3,提升下载速度) "max-concurrent-downloads": 10
max-concurrent-uploads 整数 同时上传镜像的最大线程数(默认 5) "max-concurrent-uploads": 5
log-driver 字符串 容器日志驱动(默认 json-file,可选 journaldsyslogfluentd 等) "log-driver": "json-file"
log-opts 对象 日志驱动参数(如日志大小、滚动数量) 见下方示例

示例配置(存储优化 + 日志限制)

{
  "data-root": "/data/docker",  // 迁移数据目录到大容量分区
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.size=100G"],  // 每个容器最大磁盘占用 100G
  "max-concurrent-downloads": 10,          // 加速镜像下载
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",  // 单个日志文件最大 10MB
    "max-file": "3"     // 最多保留 3 个日志文件(滚动删除)
  }
}

4. 安全配置

限制 Docker 权限、启用 TLS 认证、配置信任镜像仓库等。

参数 类型 说明 示例
tls 布尔值 是否启用 TLS 认证(远程访问 Docker 时加密) "tls": true
tlscacert 字符串 TLS 根证书路径 "tlscacert": "/etc/docker/ca.pem"
tlscert 字符串 TLS 客户端证书路径 "tlscert": "/etc/docker/cert.pem"
tlskey 字符串 TLS 客户端密钥路径 "tlskey": "/etc/docker/key.pem"
tlsverify 布尔值 是否验证服务端证书 "tlsverify": true
insecure-registries 数组(字符串) 信任的非 HTTPS 镜像仓库(如私有仓库) "insecure-registries": ["192.168.1.100:5000"]
allow-nondistributable-artifacts 数组(字符串) 允许推送非分布式镜像到指定仓库 "allow-nondistributable-artifacts": ["192.168.1.100:5000"]
live-restore 布尔值 Docker 守护进程重启时,保持容器运行(避免服务中断) "live-restore": true

示例配置(私有仓库信任 + TLS 认证)

{
  "insecure-registries": ["192.168.1.100:5000"],  // 信任内网 HTTP 私有仓库
  "tls": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem",
  "tlsverify": true,
  "live-restore": true  // 守护进程重启不影响运行中的容器
}

5. 资源限制配置

限制 Docker 占用的系统资源(CPU、内存、PID 等)。

参数 类型 说明 示例
default-shm-size 字符串 容器默认共享内存大小(默认 64M,部分服务如 Chrome、Elasticsearch 需增大) "default-shm-size": "2G"
oom-score-adjust 整数 Docker 守护进程的 OOM 优先级(-1000 到 1000,数值越低越不容易被 OOM 杀死) "oom-score-adjust": -1000
max-pids 整数 所有容器的最大 PID 总数限制(避免容器占用过多进程) "max-pids": 10000
cpu-shares 整数 Docker 整体 CPU 权重(相对值,默认 1024) "cpu-shares": 2048
memory-limit 字符串 Docker 整体内存限制(默认无限制) "memory-limit": "16G"

示例配置(资源限制)

{
  "default-shm-size": "2G",    // 默认共享内存 2G
  "oom-score-adjust": -1000,   // 避免 Docker 被 OOM 杀死
  "max-pids": 10000,           // 最大进程数 10000
  "memory-limit": "16G"        // 限制 Docker 总内存占用不超过 16G
}

6. 其他实用配置

参数 类型 说明 示例
experimental 布尔值 是否启用 Docker 实验性特性(如 Buildx、IPv6 等) "experimental": true
features 对象 启用特定特性(如 buildkit 构建引擎) "features": {"buildkit": true}
labels 数组(字符串) 给 Docker 守护进程添加标签(用于集群管理) "labels": ["env=production", "owner=devops"]
log-level 字符串 日志级别(debug/info/warn/error/fatal,默认 info "log-level": "warn"