如何限制Docker容器日志文件的大小
如何限制Docker镜像容器日志文件的大小
解决办法
在 docker-compose.yml 文件中的对应服务添加以下配置
1
2
3
4
5logging:
driver: "json-file" # 指定使用 json-file 日志驱动
options:
max-size: "100m" # 每个日志文件最大 100MB
max-file: "5" # 最多保留 5 个日志文件例:修改前
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42# 推荐使用最新的 Compose 文件格式,所以 'version' 字段可以省略
# 但如果你坚持保留,确保它是字符串格式,例如 '3.8' 或 '3'
version: '3.8'
services:
jenkins: # Docker Compose 内部的服务名称
image: jenkins/jenkins:lts # 使用 Jenkins 官方 LTS 镜像
container_name: jenkins-compose # 设置容器的实际名称,避免与已存在的容器冲突
ports:
- "8081:8080" # 将宿主机 8081 端口映射到容器的 8080 端口 (Jenkins Web UI)
- "50000:50000" # 将宿主机 50000 端口映射到容器的 50000 端口 (Jenkins Agent)
volumes:
- /data/jenkins_home:/var/jenkins_home # Jenkins 持久化数据目录
# 以下是你在容器内挂载的额外工具链,确保宿主机上的路径存在且正确
- /root/.nvm/versions/node/v14.21.3:/data/node/v14.21.3
# - /root/.nvm/versions/node/v16.17.1:/data/node/v14.21.3
# - /root/.nvm/versions/node/v16.20.2:/data/node/v16.20.2
- /usr/bin/python3:/data/python/python3
- /root/.sdkman/candidates/java/8.0.442-tem:/data/java/8.0.442-tem
- /root/.sdkman/candidates/maven/3.9.9:/data/maven/3.9.9
environment:
# 以下是 Jenkins 容器内部所需的环境变量
- MAVEN_HOME=/data/maven/3.9.9
- PATH=/opt/java/openjdk/bin:/data/maven/3.9.9/bin:/data/node/v14.21.3/bin:/data/python:/root/.nvm/versions/node/v14.21.3/bin:/root/.sdkman/candidates/maven/current/bin:/root/.sdkman/candidates/java/current/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- LANG=C.UTF-8
- JENKINS_HOME=/var/jenkins_home
- JENKINS_SLAVE_AGENT_PORT=50000
- REF=/usr/share/jenkins/ref
- JENKINS_VERSION=2.492.2
- JENKINS_UC=https://updates.jenkins.io
- JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental
- JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals
- COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log
- JAVA_HOME=/opt/java/openjdk
restart: "always" # 容器重启策略,确保是字符串 "always"
user: jenkins # 指定容器以 jenkins 用户身份运行
networks:
- data_default # 容器连接到名为 data_default 的网络
networks:
data_default:
external: true # 表明这是一个已经存在的外部网络修改后
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49# 推荐使用最新的 Compose 文件格式,所以 'version' 字段可以省略
# 但如果你坚持保留,确保它是字符串格式,例如 '3.8' 或 '3'
version: '3.8'
services:
jenkins: # Docker Compose 内部的服务名称
image: jenkins/jenkins:lts # 使用 Jenkins 官方 LTS 镜像
container_name: jenkins-compose # 设置容器的实际名称,避免与已存在的容器冲突
ports:
- "8081:8080" # 将宿主机 8081 端口映射到容器的 8080 端口 (Jenkins Web UI)
- "50000:50000" # 将宿主机 50000 端口映射到容器的 50000 端口 (Jenkins Agent)
volumes:
- /data/jenkins_home:/var/jenkins_home # Jenkins 持久化数据目录
# 以下是你在容器内挂载的额外工具链,确保宿主机上的路径存在且正确
- /root/.nvm/versions/node/v14.21.3:/data/node/v14.21.3
# - /root/.nvm/versions/node/v16.17.1:/data/node/v14.21.3
# - /root/.nvm/versions/node/v16.20.2:/data/node/v16.20.2
- /usr/bin/python3:/data/python/python3
- /root/.sdkman/candidates/java/8.0.442-tem:/data/java/8.0.442-tem
- /root/.sdkman/candidates/maven/3.9.9:/data/maven/3.9.9
environment:
# 以下是 Jenkins 容器内部所需的环境变量
- MAVEN_HOME=/data/maven/3.9.9
- PATH=/opt/java/openjdk/bin:/data/maven/3.9.9/bin:/data/node/v14.21.3/bin:/data/python:/root/.nvm/versions/node/v14.21.3/bin:/root/.sdkman/candidates/maven/current/bin:/root/.sdkman/candidates/java/current/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- LANG=C.UTF-8
- JENKINS_HOME=/var/jenkins_home
- JENKINS_SLAVE_AGENT_PORT=50000
- REF=/usr/share/jenkins/ref
- JENKINS_VERSION=2.492.2
- JENKINS_UC=https://updates.jenkins.io
- JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental
- JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals
- COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log
- JAVA_HOME=/opt/java/openjdk
restart: "always" # 容器重启策略,确保是字符串 "always"
user: jenkins # 指定容器以 jenkins 用户身份运行
networks:
- data_default # 容器连接到名为 data_default 的网络
# ====== 以下是新增的日志限制配置 ======
logging:
driver: "json-file" # 指定使用 json-file 日志驱动
options:
max-size: "100m" # 每个日志文件最大 100MB
max-file: "5" # 最多保留 5 个日志文件
# ======================================
networks:
data_default:
external: true # 表明这是一个已经存在的外部网络
手动新增日志并验证
修改配置文件
在 compose 文件中添加以下内容:
1
command: sh -c "while true; do echo 'This is a test log entry at $(date)'; sleep 0.1; done"把日志大小改为100k,方便查看
1
max-size: "100k"
强制重建容器以应用参数
1
docker compose up -d --force-recreate进入容器映射目录,监控日志大小
查找容器id
1
docker ps -a --no-trunc -f name=jenkins-compose结果:

进入容器映射目录
1
cd /var/lib/docker/containers/<你的容器id>
监控日志大小
1
watch -n 1 'ls -lh'
看到日志在涨就是成功了
记得还原compose 文件配置
