docker inspect命令用于返回关于Docker对象的低级别信息。默认情况下,docker inspect
将渲染JSON数组中的所有结果。 如果容器和映像具有相同的名称,这将返回容器JSON的未指定类型。 如果指定了格式,则将为每个结果执行给定的模板。
Go的文本/模板包描述了格式的所有细节。
用法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
选项
名称,简写 | 默认 | 说明 |
---|---|---|
--format, -f |
使用给定的Go模板格式化输出 | |
--size, -s |
false | 如果类型是容器,则显示总文件大小 |
--type |
返回指定类型的JSON |
例子
获取实例的IP地址
在大多数情况下,可以以相当简单的方式从JSON中选出任何字段。
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID
获取实例的MAC地址
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID
获取实例的日志路径
$ docker inspect --format='{{.LogPath}}' $INSTANCE_ID
获取实例的映像名称
$ docker inspect --format='{{.Config.Image}}' $INSTANCE_ID
列出所有端口绑定
可以在结果中循环数组和映射以产生简单的文本输出:
$ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID
查找特定的端口映射
当字段名称以数字开头,但模板语言的索引函数时,.Field
语法不起作用。 .NetworkSettings.Ports
部分包含内部端口映射到外部地址/端口对象列表的映射。要获取数字公共端口,可以使用索引来查找特定的端口映射,然后索引0
包含其中的第一个对象。 然后要求HostPort字段获取公共地址。
$ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID
获取JSON格式的小段
如果请求一个本身是包含其他字段的结构的字段,则默认情况下,将获得内部值的Go式转储。 Docker添加了一个模板函数json,可以将其应用于获取JSON格式的结果。
$ docker inspect --format='{{json .Config}}' $INSTANCE_ID