PowerShell で docker inspect の format に " (ダブルクォート)を入れてエラーが出た時の対応方法
コンテナのプロジェクト名を確認するために、
Windows PowerShell (5.1) で docker inspect を使用したら下記のようにエラーとなりました。
PS > docker inspect --format='{{index .Config.Labels "com.docker.compose.project" }}' web
Template parsing error: template: :1: function "com" not defined
このエラーは --format オプション内の " を ` (バッククォート)か \ (バックスラッシュ)でエスケープすることで解消できます。
PS > docker inspect --format='{{index .Config.Labels `"com.docker.compose.project`"}}' web
myproject
PS > docker inspect --format='{{index .Config.Labels \"com.docker.compose.project\"}}' web
myproject
この ` によるエスケープ処理は PowerShell のドキュメントを参考にしました。
- about_Quoting_Rules - PowerShell | Microsoft Docs
- https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-5.1
もう一方の \ によるエスケープは、検索サイトで色々と調べている中でみつけました。
(サイトは忘れてしまいました..)
ところで Windows を使っていても PowerShell ではなく、Windows Docker Toolbox などの bash をお使いの場合は、エスケープするとエラーになるのでご注意ください。
$ docker inspect --format='{{index .Config.Labels "com.docker.compose.project"}}' web
myproject
$ docker inspect --format='{{index .Config.Labels `"com.docker.compose.project`"}}' web
Template parsing error: template: :1: unterminated quoted string
$ docker inspect --format='{{index .Config.Labels \"com.docker.compose.project\"}}' web
Template parsing error: template: :1: unexpected "\\" in operand