UbuntuでDockerログ肥大化を防ぐ方法

  • 作成日 2026.06.05
  • 更新日 2026.06.18
  • ubuntu
UbuntuでDockerログ肥大化を防ぐ方法

UbuntuでDockerコンテナを長期間運用していると、コンテナログが蓄積されてディスク容量を圧迫することがあります。特にアクセス数の多いWebサービスやエラーログが頻発するアプリケーションでは、数GBから数十GBのログが生成されることも珍しくありません。本記事では、Dockerログの肥大化を防ぐための設定方法と運用のポイントを解説します。

Dockerログ肥大化の原因

Dockerではデフォルトで「json-file」ログドライバーが使用されます。

ログファイルは以下に保存されています。

/var/lib/docker/containers/

コンテナごとに以下のようなログファイルが作成されます。

xxxxxxxxxxxxxxxx-json.log

コンテナが大量のログを出力すると、このファイルが無制限に増加し続けます。

現在のログサイズを確認する

まずはログの使用量を確認します。

sudo du -sh /var/lib/docker/containers

実行結果

詳細確認

sudo du -ah /var/lib/docker/containers | sort -rh | head -20

大きなログファイルを特定できます。

Dockerのログドライバーを確認する

現在の設定を確認します。

docker info | grep "Logging Driver"

表示例

Logging Driver: json-file

json-fileを利用している場合はログローテーション設定を追加することを推奨します。

全コンテナにログローテーションを設定する

Dockerデーモン設定ファイルを編集します。

sudo nano /etc/docker/daemon.json

設定例

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

設定内容

・max-size:1ファイルの最大サイズ

・max-file:保存世代数

上記の場合は最大50MBまで保存されます。

Dockerサービスを再起動する

設定反映のため再起動します。

sudo systemctl restart docker

状態確認

systemctl status docker

正常に起動していることを確認します。

コンテナ単位でログ制限を設定する

docker run実行時に指定することも可能です。

docker run -d \
--log-opt max-size=10m \
--log-opt max-file=5 \
nginx

特定コンテナだけログ管理したい場合に利用します。

Docker Composeで設定する

Docker Compose利用時はloggingセクションを追加します。

services:
  app:
    image: nginx
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "5"

設定変更後

docker compose up -d

または

docker-compose up -d

で再作成します。

肥大化したログを削除する

既に大きくなったログは自動では縮小されません。

サイズ確認

sudo find /var/lib/docker/containers -name "*.log" -exec ls -lh {} \;

ログ内容を削除

sudo truncate -s 0 /var/lib/docker/containers/1b36332b185b1fb1da63b13c6beda358ac19264d44acb7fea9e1dba9087a25db/
1b36332b185b1fb1da63b13c6beda358ac19264d44acb7fea9e1dba9087a25db-json.log

ログファイル自体は残したまま内容のみ削除できます。

不要なコンテナやイメージを削除する

未使用リソースも容量を消費します。

未使用コンテナ削除

docker container prune

未使用イメージ削除

docker image prune -a

未使用ボリューム削除

docker volume prune

まとめて削除

docker system prune -a

実行前に必要なデータがないことを確認してください。

ログ使用量を定期監視する

定期的に容量を確認すると肥大化を早期発見できます。

確認コマンド

sudo du -sh /var/lib/docker

または

docker system df

出力例

ディスク使用量の把握に役立ちます。

おすすめのログ設定例

一般的なWebサーバーやアプリケーションでは以下の設定がよく利用されます。

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

最大200MBまで保存されるため、多くの環境で十分なログ保持と容量管理を両立できます。

まとめ

UbuntuでDockerログの肥大化を防ぐには、ログローテーション設定を行うことが最も重要です。デフォルトのjson-fileドライバーはログサイズを制限しないため、長期間運用するとディスク容量不足の原因になります。

「max-size」と「max-file」を設定してログを自動ローテーションし、定期的に「docker system df」や「du」コマンドで使用量を確認することで、安定したDocker運用を実現できます。