docker inspect
是docker客户端的原生命令,用于查看docker对象的底层基础信息。包括容器的id、建立时间、运行状态、启动参数、目录挂载、网路配置等等。另外,该命令也能够用来查看docker镜像的信息。
官方描述以下:python
Return low-level information on Docker objects
语法以下:redis
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
下表摘自官网docker
Name, shorthand | Default | Description |
--format , -f |
Format the output using the given Go template | |
--size , -s |
Display total file sizes if the type is container | |
--type |
Return JSON for specified type |
如上表,--type
用于指定docker对象类型,如:container, image。在容器与镜像同名时可使用,使用频率较低。好比,当你机器上一个容器名为redis, 一个镜像为redis:latest,则可使用下面的命令查看镜像信息。不使用type参数,则返回容器信息:json
# 查看redis:latest镜像信息 docker inspect --type=image redis # 查看redis容器信息 docker inspect redis
--size
用于查看容器的文件大小,加上该参数,输出的结果中会包含SizeRootFs
和SizeRw
(目前我还不是很肯定这两个值的含义,望知情者告知)。bash
以上两个参数都是用得比较少的,--format
实用性最大,使用频率也比较高。从表格描述可知,传入的参数值应该是go语言的模板。它很强大,能够作不少go函数的操做,因为个人go语言尚未入门,因此这里就不说太多耍杂技的了,以避免翻车,下面说一下经常使用的。网络
在实践中,咱们每每只须要查看其中部分信息,好比目录挂载信息、网络信息。而直接输入docker inspect container
时,会输出容器的全部信息,
就显得比较臃肿,咱们在命令行中翻页还不方便。 此时,--format
的实用性就体现出来了。实践中的经常使用操做以下函数
输入以下命令, 则会输出容器的Mounts信息,能够看到容器中各个目录在宿主机的具体挂载位置。学习
docker inspect --format="{{json .Mounts}}" container
参数中的json是go语言的方法名,后面是取Mounts的值作json化处理。去掉json也是能够的。
若是以为这样输入仍是不太好看,能够对json再做进一步处理,如使用python的json模块或者jq美化输出。命令以下:命令行
#使用python的json模块美化 docker inspect --format="{{json .Mounts}}" container | python -m json.tool #使用jq美化 docker inspect --format="{{json .Mounts}}" container | jq
查看网络信息可使用下面命令:code
#查看完整网络信息 docker inspect --format="{{json .NetworkSettings}}" container | jq #查看网络端口映射 docker inspect --format="{{json .NetworkSettings.Ports}}" container | jq # 查看容器的网络ip、网关等信息 docker inspect --format="{{json .NetworkSettings.Networks}}" container | jq
若是感兴趣,还能够充分利用这个--format
参数,由于它是go的模板语法,差很少是能够写go的代码。例如上述的命令,json
就是go的方法名
因此能够结合其余的go方法(如range
,split
)来耍杂技,本文就不班门弄斧了。