2026年5月21日

2026年5月21日

Dockerのログドライバーを設定する方法(json-file/syslog)

はじめに

Dockerはコンテナ化されたアプリケーションやサービスを効率的に管理するための強力なツールです。しかし、デバッグや監視のために豊富なログ情報が必要な場合、適切なログドライバーを設定することが重要になります。本記事では、json-filesyslogログドライバーを使用してDockerコンテナのログを効果的に管理する方法について解説します。

症状・背景

このテーマが必要になる主な場面は以下の通りです:

  • ログ情報の保存や分析が求められる場合
  • システム全体での統一的なログ管理が必要な場合
  • ネットワーク上に分散しているコンテナ間でログを共有する必要がある場合

手順・設定方法

ステップ1: json-fileログドライバーを使用する

# Dockerデーモンファイル (/etc/docker/daemon.json) を編集します。
sudo nano /etc/docker/daemon.json

# 必要に応じて以下のように追加または修正します。
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}

# 設定を保存し、Dockerデーモンを再起動します。
sudo systemctl restart docker

ステップ2: syslogログドライバーを使用する

# Dockerデーモンファイル (/etc/docker/daemon.json) を編集します。
sudo nano /etc/docker/daemon.json

# 必要に応じて以下のように追加または修正します。
{
    "log-driver": "syslog",
    "log-opts": {
        " facility": "local7",
        "tag": "docker"
    }
}

# 設定を保存し、Dockerデーモンを再起動します。
sudo systemctl restart docker

ステップ3: 両方のドライバーを使用する

# Dockerデーモンファイル (/etc/docker/daemon.json) を編集します。
sudo nano /etc/docker/daemon.json

# 必要に応じて以下のように追加または修正します。
{
    "log-driver": ["json-file", "syslog"],
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    },
    "syslog-address": "[udp://localhost:514]"
}

# 設定を保存し、Dockerデーモンを再起動します。
sudo systemctl restart docker

ステップ4: 実践/トラブルシュート/監視

# Dockerコンテナのログを確認します。
docker logs <コンテナID>

# 特定のコンテナのログを追跡するためにtailコマンドを使うと便利です。
docker logs -f <コンテナID>

注意事項

  • json-file ログドライバーはローカルファイルシステムにログを保存します。これは簡単で信頼性が高く、ローカルでの分析や監視に適しています。
  • syslog ログドライバーはネットワークプロトコルを使用してログを送信します。これにより、分散された環境での統一的なログ管理が可能になります。
  • 複数のログドライバーを使用する場合は、互換性とパフォーマンスに注意が必要です。

まとめ

1. json-file: ローカルファイルシステムにロギング情報を保存します。信頼性が高いですが、大量のログが蓄積される可能性があります。

2. syslog: ネットワーク上のサーバーにログを送信します。分散環境での統一的なログ管理に適しています。

3. 組み合わせ: 両方のドライバーを使用することで、ローカルとネットワーク間でロギング情報を分散管理できます。

4. 監視: Dockerコンテナのログをリアルタイムで確認し、問題を迅速に対応することができます。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ