Docker命令行参考(4) – docker inspect显示容器或镜像相关信息

  1. Usage:  docker inspect [OPTIONS] CONTAINER|IMAGE|TASK [CONTAINER|IMAGE|TASK…]
  2.  
  3. Return low-level information on a container, image or task
  4.  
  5.   -f, –format       Format the output using the given go template
  6.   –help             Print usage
  7.   -s, –size         Display total file sizes if the type is container
  8.                      values are "image" or "container" or "task"
  9.   –type             Return JSON for specified type, (e.g image, container or task)

默认情况下,以JSON数组格式输出所有结果。如果容器和镜像有相同的名称,当没有指定类型时将返回容器的JSON信息。如果指定了格式,给定的模式将格式化每个结果。
Go’s text/template描述了这个格式的所有细节。

示例

大多数情况,可以非常简单地从JSON取任何的字段。

获取实例IP地址

  1. $ docker inspect –format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $INSTANCE_ID

获取实例MAC地址

  1. $ docker inspect –format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}’ $INSTANCE_ID

获取实例日志路径

  1. $ docker inspect –format='{{.LogPath}}’ $INSTANCE_ID

获取任务镜像名称

  1. $ docker inspect –format='{{.Container.Spec.Image}}’ $INSTANCE_ID

列出所有绑定的端口

可以在结果中循环数组和映射以产生简单的文本输出:

  1. $ docker inspect –format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}’ $INSTANCE_ID

查找一个指定的端口映射

当字段名以一个数字开头时,.Field语法就失效了,不过可以用模板语言的index函数实现。.NetworkSettings.Ports区块包含内部端口映射到外部地址/端口对象列表的映射。要获取数字公共端口,可以使用索引查找特定端口映射,然后索引0包含其中的第一个对象。 然后我们要求HostPort字段获取公共地址。

  1. $ docker inspect –format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}’ $INSTANCE_ID

获取JSON格式的子区块

如果请求一个字段本身是一个包含其他字段的结构,默认情况下你会得到内部值的Go样式转储。Docker添加了一个模板函数json,它可以应用于以JSON格式获取结果。

  1. $ docker inspect –format='{{json .Config}}’ $INSTANCE_ID