Linux · 2 分钟阅读
10. 修改 Docker 守护进程配置
所有配置都建议放进
/etc/docker/daemon.json,别动docker.service——daemon.json 会被覆盖重启保留,systemd 改的 flag 在升级时容易丢。
配置文件位置
| 文件 | 作用 |
|---|---|
/etc/docker/daemon.json |
主配置(推荐) |
/lib/systemd/system/docker.service |
systemd unit 文件 |
/etc/systemd/system/docker.service.d/*.conf |
覆盖 unit(推荐) |
常用配置
存储位置
{
"data-root": "/data/docker"
}
默认
/var/lib/docker。生产建议挂独立盘或独立卷。
镜像加速
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://hub-mirror.c.163.com"
]
}
私有仓库
{
"insecure-registries": [
"registry.example.com:5000"
]
}
日志限制
容器日志默认无限增长,必须限制:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
}
}
存储驱动
{
"storage-driver": "overlay2"
}
RHEL 9+ / Ubuntu 22.04+ 默认就是 overlay2,老的 devicemapper 早该退出舞台。
桥接网络
{
"bip": "172.30.0.1/16",
"default-address-pools": [
{"base": "172.30.0.0/16", "size": 24}
]
}
避免和公司内网冲突。
systemd 覆盖
要加 ExecStart 之外的 flag,建议用 drop-in:
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd \
--data-root /data/docker \
--log-driver json-file
EOF
ExecStart=那一行必须保留——systemd 单元里"清空"原值再重写。
重启
systemctl daemon-reload
systemctl restart docker
systemctl status docker
验证
docker info
docker info --format '{{.RegistryConfig.Mirrors}}'
一些经验
- 改完先
docker info验证,没改错再批量推 data-root一旦改完要mv /var/lib/docker/* /data/docker/,别忘- 升级 Docker 版本前先备份
/etc/docker/daemon.json - 多套环境用同一份镜像时,daemon.json 跟代码一起放进仓库