生产环境Docker应该怎么配置,主要是如何处理日志,避免撑爆磁盘。
1 Docker日志好坑
Docker 默认使用的是 json-file 日志驱动。日志会一直写,一直写,一直写……没有限制、没有轮转、没有清理!
日志默认位置:
/var/lib/docker/containers/<container-id>/<container-id>-json.log
当你发现它时,可能已经:
占了几十个 G 吃满了磁盘 服务都挂了!
2 如何处理日志问题
主要通过日志轮询方式处理。下面介绍三种方式设置日志轮询
2.1 运行容器时设置轮转策略
docker run -d \
--name nginx \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx:1.27
参数解释:
max-size=10m:单个日志文件最大 10MBmax-file=3:最多保留 3 个轮转文件(最多 30MB)
容器总日志控制在 30MB 内,绝不爆炸!这个只会对单个容器生效。
2.2 修改 Docker 配置
如果你想对所有容器进行日志轮询,就执行下面配置:
编辑配置文件 /etc/docker/daemon.json
其他参数说明: /data/root:设置数据存放目录,默认存放/var/lib/docker下面 live-restore:Docker 服务重启,容器不停止,避免重启 docker 导致业务全挂 配置完,重启 Docker 服务: 注意:只对之后创建的容器生效! 你可以这样快速清理日志(生产环境慎用!): 或者更稳一点: 这个操作慎用,有可能影响应用运行,而且不方便后续排查 仅推荐在磁盘告急时临时使用! 根据不同场景推荐配置值。 Docker 日志默认设置太坑,一定要手动配置! 最佳实践:[root@harbor ~]# cat /etc/docker/daemon.json
{
"data-root": "/data/docker",
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "10m"
}
}
systemctl restart docker2.3 正在运行的容器
echo "" > $(docker inspect --format='{{.LogPath}}' <container-id>)docker stop 停掉容器docker rm 删除容器2.4 禁用日志输出
docker run --log-driver=none 容器名2.5 日志快速清理
find /var/lib/docker/containers -name *-json.log -exec truncate -s 0 {} \;3 实战建议
max-size=5m max-file=3max-size=10m max-file=5max-size=50m max-file=10json-file + max-size + max-filedaemon.json 设置全局默认
本文链接:https://www.kinber.cn/post/6217.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
