JSON ファイル・ロギング・ドライバ¶
デフォルトでは、 Docker は全てのコンテナの標準出力(と標準エラー)を取り込み、それらを JSON 形式のファイルに書き込みます。JSON 形式では、各行に参照元( stdout
か stderr
)とタイムスタンプを追記します。各ログファイルに含む情報は、1つのコンテナに対してのみです。
{"log":"Log line is here\n","stream":"stdout","time":"2019-01-01T11:11:11.111111111Z"}
警告
json-file
ロギング ドライバはファイルをベースとするストレージを使います。これらのファイルは、 Docker デーモンによって排他的にアクセスされるよう設計されています。外部のツールによって、これらのファイルとやりとりしようとすると、Docker のログ記録システムによって妨害される可能性があり、かつ、結果的に予期しない挙動として、無効とされるでしょう。
使い方¶
json-file
ドライバをデフォルトのロギング・ドライバとして使うためには、 daemon.json
ファイルで log-driver
と log-opt
キーに適切な値を設定します。ファイルは Linux ホスト上では /etc/docker
にあり、 Windows Server 上では C:\ProgramData\docker\config\daemon.json
にあります。もしもファイルが存在しなければ、まず第一に作成します。 daemon.json
を使って Docker を設定する方法は、 daemon.json をご覧ください。
以下の例は、ログドライバを json-file
に設定し、自動的にログローテーションをするために max-size
オプションを指定しています。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m"
}
}
注釈
daemon.json
設定ファイルの log-opts
設定は、文字列として指定する必要があります。論理値および整数値(先の例にある max-file
の値)は、引用符( "
)で囲む必要があります。
設定を変えるには Docker を再起動し、それ以後作成するコンテナに対して有効になります。既存のコンテナは新しいログ設定は適用されません。
特定のコンテナに対してのみロギング・ドライバを指定したい場合は、 --log-driver
フラグを docker container create
か docker run
で指定します。
$ docker run \
--log-driver local --log-opt max-size=10m \
alpine echo hello world
オプション¶
json-file
ロギング・ドライバは以下のロギング・オプションをサポートしています。
オプション |
説明 |
サンプル値 |
---|---|---|
|
ログファイルが回される前の、最大サイズです。整数値と容量を表す単位( |
|
|
存在する最大のログファイル数です。ログへの追記がファイルを超過すると、ログを回しはじめ、古いファイルは削除します。 この設定が max-size もまた設定されている時に効果が出ます。 整数値で指定します。デフォルトは 1 です。 |
|
|
Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連するラベルを、カンマ区切りで指定します。 ログとタグのオプション を使います。 |
|
|
|
|
|
Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連する環境変数を、カンマ区切りで指定します。 ログとタグのオプション を使います。 |
|
|
Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連する環境変数を、正規表現で指定します。 ログとタグのオプション を使います。 |
|
|
ログファイルの回転時に圧縮するかどうか切り替えます。デフォルトは圧縮が無効です。 |
|
以下の例は、 alpine
コンテナの開始にあたり、最大で3つのログファイルと、それぞれ10メガバイトを越えないように指定しています。
$ docker run -it --log-driver local --log-opt max-size=10m --log-opt max-file=3 alpine ash
参考
- JSON File logging driver
https://docs.docker.com/config/containers/logging/json-file/