204 字
1 分钟
Docker 生产环境配置(存储目录迁移 / 日志限制)
2026-01-30

一、迁移默认存储目录#

Docker 默认将所有数据(镜像、容器、卷)存储在 /var/lib/docker/,生产环境系统盘通常空间有限,建议迁移到数据盘。

WARNING

此操作建议在刚安装完 Docker 后执行,迁移前务必停止所有容器,避免数据丢失。

# 1. 停止 Docker 服务
sudo systemctl stop docker
# 2. 创建新的数据目录
mkdir -p /opt/docker/
chmod -R 755 /opt/docker/
# 3. 迁移现有数据(如有)
sudo cp -a /var/lib/docker/* /opt/docker/
# 4. 修改 Docker 配置文件
mkdir -p /etc/docker
vim /etc/docker/daemon.json

daemon.json 中添加:

{
"data-root": "/opt/docker"
}
# 5. 重载配置并重启
sudo systemctl daemon-reload
sudo systemctl restart docker
# 6. 验证新目录是否生效
sudo docker info | grep "Docker Root Dir"
# 7. 确认数据无误后删除旧目录(可选)
rm -rf /var/lib/docker

二、限制容器日志大小#

方法一:全局配置(推荐,对新容器生效)

/etc/docker/daemon.json 中添加:

{
"log-opts": {
"max-size": "500m",
"max-file": "3"
}
}
  • max-size:单个日志文件最大 500MB
  • max-file:最多保留 3 个日志文件(滚动)
systemctl daemon-reload
systemctl restart docker
NOTE

此配置只对重启后新创建的容器生效,已运行的容器需重建才能应用。

方法二:脚本主动清理日志

/opt/scripts/clean-docker-logs.sh
#!/bin/bash
# 根据实际 data-root 修改此路径(默认 /var/lib/docker/containers)
log_path="/var/lib/docker/containers"
for container_id in $(ls "$log_path"); do
log_file="${log_path}/${container_id}/${container_id}-json.log"
if [ -f "$log_file" ]; then
echo "清理容器 ${container_id} 的日志"
truncate -s 0 "$log_file"
fi
done
echo "日志清理完成"

三、完整 daemon.json 配置参考#

/etc/docker/daemon.json
{
"data-root": "/opt/docker",
"log-opts": {
"max-size": "500m",
"max-file": "3"
},
"insecure-registries": [
"harbor.example.com"
],
"registry-mirrors": [
"https://docker.example.com"
]
}
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Docker 生产环境配置(存储目录迁移 / 日志限制)
https://blog.olinl.com/posts/docker-prod-config/
作者
顾拾柒
发布于
2026-01-30
许可协议
CC BY-NC-SA 4.0

目录