JSON ファイル・ロギング・ドライバ

デフォルトでは、 Docker は全てのコンテナの標準出力(と標準エラー)を取り込み、それらを JSON 形式のファイルに書き込みます。JSON 形式では、各行に参照元( stdoutstderr )とタイムスタンプを追記します。各ログファイルに含む情報は、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-driverlog-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 createdocker run で指定します。

$ docker run \
      --log-driver local --log-opt max-size=10m \
      alpine echo hello world

オプション

json-file ロギング・ドライバは以下のロギング・オプションをサポートしています。

オプション 説明 サンプル値
max-size ログファイルが回される前の、最大サイズです。整数値と容量を表す単位( kmg )を追加します。デフォルトは 20m です。デフォルトは -1(無制限)です。 --log-opt max-size=10m
max-file 存在する最大のログファイル数です。ログへの追記がファイルを超過すると、ログを回しはじめ、古いファイルは削除します。 この設定が max-size もまた設定されている時に効果が出ます。 整数値で指定します。デフォルトは 1 です。 --log-opt max-file=3
lables Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連するラベルを、カンマ区切りで指定します。 ログとタグのオプション を使います。 --log-opt labels=production_status,geo
lables-regex labels に似ていて互換性があります。ログ記録に関連するラベルに、正規表現で一致します。高度な log tag オプション に使います。 --log-opt labels-regex=^(production_status|geo)
env Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連する環境変数を、カンマ区切りで指定します。 ログとタグのオプション を使います。 --log-opt env=os,customer
env-regex Docker デーモンの開始時に適用します。デーモンが受け付けるログに関連する環境変数を、正規表現で指定します。 ログとタグのオプション を使います。 --log-opt env-regex=^(os|customer)
compress ログファイルの回転時に圧縮するかどうか切り替えます。デフォルトは圧縮が無効です。 --log-opt compress=true

以下の例は、 alpine コンテナの開始にあたり、最大で3つのログファイルと、それぞれ10メガバイトを越えないように指定しています。

$ docker run -it --log-driver local --log-opt max-size=10m --log-opt max-file=3 alpine ash