1、docker inspect 简介
docker inspect
用于返回Docker对象的低级信息,docker inspect
提供Docker控制的构造的详细信息。默认情况下,docker inspect
将以JSON数组的形式呈现结果。
2、docker inspect 语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
参考文档:https://docs.docker.com/engine/reference/commandline/inspect/
1)格式化输出(--format)
如果指定了格式,则将对每个结果执行给定的模板。 Go的文本/模板包描述了格式的所有细节。
2)指定目标类型(--type)
--type container|image|node|network|secret|service|volume|task|plugin
docker inspect
命令通过ID或名称匹配任何类型的对象。在某些情况下,多种类型的对象(例如,一个容器和一个卷)使用相同的名称存在,使得结果不明确。
要将docker检查限制为特定类型的对象,请使用--type
选项。
docker inspect --type=volume myvolume
3)检查容器的大小(-s,--size)
--size
或简写的-s
选项会向docker检查输出中添加两个额外的字段。此选项仅适用于容器。容器不需要运行,它也适用于停止的容器。
docker inspect --size mycontainer
输出包括常规docker inspect命令的完整输出,以及以下附加字段:
SizeRootFs:容器中所有文件的总大小,单位为字节。
SizeRw:容器中已创建或更改的文件的大小,与它的映像相比,以字节为单位。
docker run --name database -d redis 3b2cbf074c99db4a0cad35966a9e24d7bc277f5565c17233386589029b7db273 docker inspect --size database -f '{{ .SizeRootFs }}' 123125760 docker inspect --size database -f '{{ .SizeRw }}' 8192 docker exec database fallocate -l 1000 /newfile docker inspect --size database -f '{{ .SizeRw }}' 12288
3、docker inspect 命令
1)获取实例的IP地址
在大多数情况下,可以相当直接地从JSON中取出任何字段
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID
2)获取实例的MAC地址
docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID
3)获取实例的日志路径
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
4)获取实例的镜像名称
docker inspect --format='{{.Config.Image}}' $INSTANCE_ID
5)列出所有端口绑定
可以在结果中遍历数组和映射,以生成简单的文本输出:
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID
6)找到一个特定的端口映射
docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID
7)获取JSON格式的结果
docker inspect --format='{{json .Config}}' $INSTANCE_ID
4、选项说明
命令 | 描述 | |
--format , -f | 使用自定义模板格式化输出 ‘json’:以json格式打印 ‘TEMPLATE’:使用给定的Go模板打印输出。 有关使用模板格式化输出的更多信息, | |
--size , -s | 如果类型为容器,则显示文件的总大小 | |
--type | 返回指定类型的JSON |