/var/lib/docker/containersのログが肥大化

dockerの肥大化したログを対処

* 本ページはプロモーションが含まれています

Dockerで稼働しているLDAPサーバーが容量100%になってたので調べてみた。
このLDAPサーバーは、読み込み専用に近いので、それほどデータは増えないはずなのに?

# du -sh /var/lib/docker/* |sort -n
1.2G	/var/lib/docker/overlay2
2.1M	/var/lib/docker/image
4.0K	/var/lib/docker/runtimes
4.0K	/var/lib/docker/swarm
4.0K	/var/lib/docker/tmp
4.0K	/var/lib/docker/trust
4.4M	/var/lib/docker/volumes
7.8G	/var/lib/docker/containers
20K	/var/lib/docker/builder
24K	/var/lib/docker/plugins
60K	/var/lib/docker/network
108K	/var/lib/docker/buildkit

明らかに/var/lib/docker/containersが容量大になっている

対応策 

まんま、この記事の通りです↓

  • コンテナIDを調べる
$ docker ps -a
CONTAINER ID   IMAGE                        COMMAND                 CREATED       STATUS       PORTS                                            NAMES
9de577ac08a6   osixia/phpldapadmin:latest   "/container/tool/run"   2 years ago   Up 7 weeks   443/tcp, 0.0.0.0:6001->80/tcp, :::6001->80/tcp   ldap-admin
87f44c8f00af   osixia/openldap:latest       "/container/tool/run"   2 years ago   Up 7 weeks   0.0.0.0:389->389/tcp, :::389->389/tcp, 636/tcp   ldap-host

IDが87fで始まるので、ログの場所を検索してみる

$ docker inspect 87f |grep -i log
        "LogPath": "/var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log",
            "LogConfig": {

ログの場所が分かったので、容量を調べてみる

# ls -lh /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log
-rw-r----- 1 root root 7.8G 10月  5 16:15 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log

7.8GBと肥大化していた

ログファイルを削除する(空にする)

$ sudo truncate -s 0 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log

# ls -lh /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log
-rw-r----- 1 root root 0 10月  5 16:18 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log

このままでは一時的に解決しただけで、何れ同じ症状が再発するので、ログの設定を修正

このサーバーでは、LDAPのDockerのみ稼働なので、dockerグローバル設定します

/etc/docker/daemon.logを下記の内容で新規作成

$ cat /etc/docker/daemon.log
{
   "log-driver": "json-file",
   "log-opts": {"max-size": "10m", "max-file": "3"}
}

個別のコンテナだと下記のようにdocker-compose.ymlへ記述

logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

docker再起動して完了です


See also