format コマンドとログ出力

Docker は Go テンプレート を使い、様々なコマンドやログ・ドライバの出力を操作できます。

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 .}}'

参考

Format command and log output

https://docs.docker.com/config/formatting/