コマンド出力やログ出力のフォーマット変更
Docker は Go 言語の templates パッケージ を利用して、所定のコマンドやログドライバーの出力フォーマットを操作できるようにしています。
Docker では、テンプレート項目を操作する基本機能を提供します。
以下では、すべてdocker inspect
コマンドを使った例を示します。
ただしこれ以外の CLI コマンドにも--format
フラグは用意されています。
また多くの CLI コマンドリファレンスにて、出力フォーマットをカスタマイズする例を示しています。
メモ
--format
フラグを用いる際には、利用しているシェル環境を考慮する必要があります。 Posix シェルの場合、以下のようなコマンド実行では、シングルクォートで囲むことが必要です。$ docker inspect --format '{{join .Args " , "}}'
逆に Windows シェル(たとえば PowerShell)の場合、シングルクォートの利用は必要ですが、パラメーター内部ではダブルクォートをエスケープする必要があります。 たとえば以下のとおりです。
$ docker inspect --format '{{join .Args \" , \"}}'
join
join
は文字列のリストを連結して、1つの文字列を生成します。
リスト内では、各項目はセパレーターで区切ります。
$ docker inspect --format '{{join .Args " , "}}' container
table
table
は出力したい項目を指定します。
$ docker image list --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"
json
json
は項目を json 文字列としてエンコードします。
$ docker inspect --format '{{json .Mounts}}' container
lower
lower
は文字列を小文字化します。
$ docker inspect --format "{{lower .Name}}" container
split
split
は、文字列を分割して、セパレーターによって区切られた文字列リストにします。
$ docker inspect --format '{{split .Image ":"}}'
title
title
は文字列の先頭文字を大文字にします。
$ docker inspect --format "{{title .Name}}" container
upper
upper
は文字列を大文字化します。
$ docker inspect --format "{{upper .Name}}" container
println
println
は各項目を一行ずつ出力します。
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' container
ヒント
どの項目を出力できるかを知るには、以下を実行すれば全項目を JSON 形式で表示できます。
$ docker container ls --format='{{json .}}'