限制容器在 Docker 输出的日志大小

默认情况下,Docker 容器如果不被销毁的话,那么它的日志会一直保留。如果我们有一个连续运行一年的 NGINX 服务容器,那么它的日志文件就会非常大。 Docker 容器的日志都会挂在到 /var/lib/docker/containers/ 文件夹下,并且以下面的格式进行命名。

1
/var/lib/docker/containers/<container id>/<container id>-json.log

有三种方式限制日志大小,默认情况是全局设置,这样设置的话会对所有容器进行应用。

方式一

使用文本编辑器编辑 /etc/docker/daemon.json 文件,并在里面加上限制日志容量的相关参数。

1
2
3
4
{
  "log-driver": "json-file",
  "log-opts": {"max-size": "10m", "max-file": "3"}
}

修改完成之后,需要重启 Docker 服务。

1
sudo systemctl restart docker

方式二

如果我们的容器是通过 docker run 命令启动的,我们也可以添加相关参数进行限制。

1
docker run --log-opt max-size=10m --log-opt max-file=5 my-app:latest

方式三

如果你使用的是 Docker Compose 启动对应的容器,可以在 docker-compose.yaml 文件里面定义相应的参数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
version: '3'
services:
  nginx:
    container_name: nginx
    image: nginx
    restart: always
    logging:
      driver: "json-file"
      options:
       max-file: "5"
       max-size: "10m"
Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计