之前Ubuntu环境下docker方式部署的gitlab服务器,zabbix突然报告空间使用已超80%。查看后发现一个73G的大日志文件,位于/var/lib/docker/containers/ef5e0c55b57968eaf52ef9c9f5dca4142a1b6c2878dcb6eceee098568bb0d0c3/目录下。

该路径是Docker容器日志的标准路径,这个文件应该是GitLab的JSON日志文件。

使用`truncate`命令清空日志文件,暂时解决了空间告警问题,但日志还在不断生成。

为了避免以后再次出现日志过大的问题,打算配置Docker的日志轮转。

修改Docker的配置文件/etc/docker/daemon.json,添加日志驱动配置:

{

"log-driver": "json-file",

"log-opts": {

"max-size": "100m",

"max-file": "3"

}

}

这里设置每个日志文件最大100MB,最多保留3个文件(即总共最多300MB)。然后重启Docker服务:

#sudo systemctl restart docker

但是命令执行报错

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

执行journalctl -xeu docker.service,查看具体报错信息,发现

Aug 12 05:43:30 gitserver dockerd[1811208]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair

检查daemon.json文件,新加的配置写在原有镜像配置之后

"registry-mirrors": [

]

在镜像列表后缺了个逗号" ,"

修改后保存,

重启Docker,服务重启成功。

#sudo systemctl daemon-reload

#sudo systemctl restart docker

第二天观察日志文件,发现已超过400M。

查看容器日志驱动配置,返回结果为空

# docker inspect gitlab --format '{{.HostConfig.LogConfig}}'

{json-file map[ ]}

表明DOCKER的配置在容器中未生效。

打算重建容器看下效果

#docker compose down

#docker compose up -d

再次查看容器日志驱动配置,返回结果正常了。

# docker inspect gitlab --format '{{.HostConfig.LogConfig}}'

{json-file map[max-file:3 max-size:100m]}

在随后的观察中,日志文件达到100M就会生成第二个文件,第三个文件也达到100M后,会覆盖第一个文件,日志轮转配置成功。

总结:修改docker配置文件后,不能仅重启docker服务,还要重建容器才能使配置生效。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐