2026年5月21日
2026年5月21日
Dockerのログドライバーを設定する方法(json-file/syslog)
はじめに
Dockerはコンテナ化されたアプリケーションやサービスを効率的に管理するための強力なツールです。しかし、デバッグや監視のために豊富なログ情報が必要な場合、適切なログドライバーを設定することが重要になります。本記事では、json-fileとsyslogログドライバーを使用して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コンテナのログをリアルタイムで確認し、問題を迅速に対応することができます。
関連記事: