システムにDockerをインストールして使用する際、Docker内で実行中のコンテナは、バックグラウンドで気付かないうちに大量のログを生成する可能性がある。

Dockerサービスは通常logrotateをサポートしているが、このサポートはデフォルトではオフになっている。ある日突然ディスクが一杯になったら、私が言っていることがよくわかるだろう。: )

サーバーにDockerサービスを初めてインストールし、コンテナを初めて実行する場合は、以下の手順に従うことができる。

Dockerサービスが停止状態のとき、まずDockerサービスがlogrotate操作に必要とするファイルをテキストエディタで開く。私のお気に入りはvimで、vimを使った。nano、picoなどの他のエディタを選んでもよい。

sudo vim /etc/docker/daemon.json

次に、このファイルに以下の行を追加して保存し、ファイルを閉じる。

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

Dockerサービスを再起動するのを忘れずに。

sudo systemctl restart docker

これで、Dockerサービスは"/var/lib/docker/containers/CONTAINERID/"パスの下でログのローテーションを開始した。