如何减小 Docker 容器的日志文件大小

有一台跑 docker 的服务器,系统告警磁盘满了,经过排查,发现 /var/lib/docker/containers/ 占用了过多的磁盘空间,需要清理一下。

检查

/var/lib/docker/containers/ 目录是 Docker 容器的日志目录,我们可以通过以下的命令,来查看每个容器的日志大小。

 

SHELL

 

1
docker ps -aq | xargs -I '{}' docker inspect --format='{{.LogPath}}' '{}' | xargs ls -lh

可以看到类似的内容。

 

TXT

 

1
2
3
4
-rw-r----- 1 root root 300G Feb  2 12:01 /var/lib/docker/containers/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7-json.log
-rw-r----- 1 root root  779 Aug  5 00:35 /var/lib/docker/containers/1663d1e966bc605629470bba553c9678c31712527795ce4e2da9d044655c0e2d/1663d1e966bc605629470bba553c9678c31712527795ce4e2da9d044655c0e2d-json.log
-rw-r----- 1 root root    0 Aug  5 00:35 /var/lib/docker/containers/247b3233efb707bb13933fa97db5e9f834be6b53b0e52d262ad95c0f2f8e393e/247b3233efb707bb13933fa97db5e9f834be6b53b0e52d262ad95c0f2f8e393e-json.log
-rw-r----- 1 root root 2.0K Aug  5 00:35 /var/lib/docker/containers/5702fc3fce1f6e57565219030cadc33adc995289e4fb48b796ac6449fe4e6919/5702fc3fce1f6e57565219030cadc33adc995289e4fb48b796ac6449fe4e6919-json.log

我们发现一个日志已经达到了 300G。需要赶紧清理一下。

备份

如果日志很重要,可以备份一下,例如:

 

SHELL

 

1
cat /var/lib/docker/containers/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7-json.log | bzip2 --best --compress --stdout /data/backup/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7-json.log.bz2

我这机器是一点空间都没有了,就不备份了。

删除日志

我们可以使用 fallocate,比如我们删掉这个文件的前 295G,保留最后的 5G 日志。

 

SHELL

 

1
fallocate --collapse-range --offset 0 --length 295GiB --verbose /var/lib/docker/containers/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7/10cbdaa6640bfdd065ee4a192f5f455751f36938c0bbac870d75c6648470caa7-json.log

如何规避

配置一下 docker,限制日志的存储量,并开启滚动存储,以减少日志过度留存。

例如,在 docker-compose.yml 中指定日志配置。

 

YML

 

1
2
3
4
5
logging:
  driver: "json-file"
  options:
    max-size: "1024m"
    max-file: "1"

或者直接怼到 docker 的全局配置下。

 

SHELL

 

1
echo '{"log-driver": "json-file", "log-opts": {"max-size": "1024m", "max-file": "1"}}' | jq . > /etc/docker/daemon.json

然后 restart docker 就大吉了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇