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
标签:容器Docker 发布于:2019-11-19 15:58:21