从容器中获取特定信息

你可以通过运行以下命令从容器中获取特定信息:

docker inspect -f '<format>' <container>

例如,你可以通过运行以下命令获取网络设置:

docker inspect -f '{{ .NetworkSettings }}' <container>

你还可以获得 IP 地址:

docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>

参数 -f 表示格式,并将接收 Go 模板作为输入以格式化预期的内容,但这不会带来美丽的回报,因此请尝试:

docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}

json 关键字将返回 JSON。

所以要完成,有一点建议是在那里使用 python 来格式化输出 JSON:

docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool

瞧,你可以查询 docker 上的任何内容,并使其在你的终端中看起来很漂亮。

也可以使用名为“ jq ” 的实用程序来帮助处理 docker inspect 命令输出。

docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]

上面的命令将返回以下输出:

[
  "172.17.0.1"
]

此输出实际上是包含一个元素的列表。有时,docker inspect 会显示几个元素的列表,你可能想要引用特定元素。例如,如果 Config.Env 包含多个元素,则可以使用 index 引用此列表的第一个元素:

docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>

第一个元素索引为零,这意味着此列表的第二个元素位于索引 1

docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>

使用 len 可以获得列表中元素的数量:

docker inspect --format ‘{{ len .Config.Env }}’ <container>

使用负数,可以引用列表的最后一个元素:

docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>

一些 docker inspect 信息来自键的字典:值,这里是一个 jess / spotify 运行容器的 docker inspect 的摘录

"Config": { "Hostname": "8255f4804dde", "Domainname": "", "User": "spotify", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "DISPLAY=unix:0", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/home/spotify" ], "Cmd": [ "-stylesheet=/home/spotify/spotify-override.css" ], "Image": "jess/spotify", "Volumes": null, "WorkingDir": "/home/spotify", "Entrypoint": [ "spotify" ], "OnBuild": null, "Labels": {} },

所以我得到整个 Config 部分的值

docker inspect -f '{{.Config}}' 825

{8255f4804dde spotify false false false map[] false false false [DISPLAY=unix:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/spotify] [-stylesheet=/home/spotify/spotify-override.css] false jess/spotify map[] /home/spotify [spotify] false [] map[] }

但也是一个字段,就像 Config.Image 的值一样

docker inspect -f '{{index (.Config) "Image" }}' 825

jess/spotify

或 Config.Cmd

docker inspect -f '{{.Config.Cmd}}' 825

[-stylesheet=/home/spotify/spotify-override.css]