LinuCレベル3 プラットフォームスペシャリスト コンテナ技術の利用 問9
コンテナ技術の利用/コンテナの操作と管理Dockerホストで、json-fileロギングドライバが出力するコンテナのログがディスクを圧迫している。今後作成するコンテナについて、ログファイルのサイズと世代数を制限する設定として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「コンテナ技術の利用」に対応。実際の試験問題ではありません)
- A/etc/docker/daemon.jsonでlog-driverをnoneにし、docker logsの出力をファイルへリダイレクトさせる
- B/etc/docker/daemon.jsonのlog-optsにmax-sizeとmax-fileを指定し、Dockerデーモンを再起動する
- C~/.docker/config.jsonにmax-sizeとmax-fileを書き、docker loginし直して設定を反映させる
- DDockerfileの各命令にLABELでmax-sizeとmax-fileを付け、ビルドし直したイメージから起動する
正解:B
解説
Dockerデーモン全体の既定のロギング設定は/etc/docker/daemon.jsonに書きます。json-fileドライバでは、log-optsのmax-size(1ファイルの最大サイズ)とmax-file(保持する世代数)でログのローテーションを設定できます。変更後はDockerデーモンの再起動が必要で、設定が適用されるのは以降に作成したコンテナです(既存のコンテナは作り直す必要があります)。個別のコンテナにはdocker runの--log-optやComposeのloggingキーでも指定できます。
選択肢ごとの解説
- A誤り。log-driverをnoneにするとログ自体が記録されなくなり、docker logsでも何も表示されません。サイズ制限の方法ではありません。
- B正しい。daemon.jsonのlog-optsにmax-sizeとmax-fileを指定するのが、json-fileドライバのログを制限する方法です。
- C誤り。~/.docker/config.jsonはdockerクライアントの設定(レジストリの認証情報等)を置くファイルで、デーモンのロギング設定は書きません。
- D誤り。LABELはイメージにメタデータを付けるだけの命令で、ログのローテーションには作用しません。