GitLab Runner部署后Docker容器日志丢失,需保留至少3个月日志
解决GitLab Runner流水线Docker容器日志丢失问题
1. 全局配置Docker日志持久化
修改Docker守护进程配置文件(默认路径/etc/docker/daemon.json),使用local日志驱动并设置3个月的保留规则:
{ "log-driver": "local", "log-opts": { "max-size": "10m", "max-file": "30", "retention": "90d" } }
保存后重启Docker服务使配置生效:
systemctl restart docker
该配置会让所有Docker容器的日志持久化到本地文件系统,自动保留90天,超出大小或时间限制的日志会自动轮转清理。
2. 针对GitLab Runner单独配置日志规则
编辑GitLab Runner的配置文件(默认路径/etc/gitlab-runner/config.toml),在对应Runner的配置段中指定日志驱动及参数:
[[runners]] name = "your-docker-runner" executor = "docker" [runners.docker] # 其他已有配置... log_driver = "local" log_opt = ["max-size=10m", "max-file=30", "retention=90d"] # 挂载容器日志目录到Runner主机,确保日志不会随容器销毁丢失 volumes = ["/cache", "/var/lib/docker/containers:/var/lib/docker/containers"]
重启GitLab Runner服务生效:
gitlab-runner restart
这种方式可以单独为GitLab流水线的容器配置日志策略,不影响主机上其他Docker容器。
3. 集中式日志留存(可选)
如果需要更稳定的日志存储,可以将Docker日志转发到本地日志服务(如rsyslog),再配置日志保留:
- 修改Docker daemon配置使用
syslog驱动:
{ "log-driver": "syslog", "log-opts": { "syslog-address": "unix:///dev/log" } }
- 编辑rsyslog配置文件(
/etc/rsyslog.conf),添加Docker日志的存储规则和90天保留策略:
$template DockerLogPath, "/var/log/docker/%HOSTNAME%/%PROGRAMNAME%.log" :programname, startswith, "docker-" ?DockerLogPath $DailyFileRetention 90
- 重启rsyslog和Docker服务:
systemctl restart rsyslog docker
内容的提问来源于stack exchange,提问作者Shadi Akil
相关产品推荐
相关产品推荐

