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,可选 journald、syslog、fluentd 等) |
"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" |