如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

对于一个普通的镜像文件,如果能够正确使用的话,在docker run的时候,就必须正确设置相关的参数,比如常见的:端口-p,目录-v,环境变量-e。因为这些参数设置错误之后,目前的docker来说(截至到发稿,最新版本号为:18.06.1-ce, build e68fc7a),并没有好的办法修改这些参数。只能rm掉参数错误的容器,然后,再run一个新的容器。这个操作是比较痛苦的。

估计,在以后的docker版本中,官方会推出docker update -p/docker update -v/docker update -e之类的修改方法。但是,目前,是不支持这样操作的。

未知docker镜像(容器)分析,docker inspect命令使用指南 - dockers
未知docker镜像(容器)分析,docker inspect命令使用指南(图2-1)

所以,在docker run之前,一定要想好自己要传递的参数,是什么样的。本文中,苏南大叔讲述的命令叫做docker inspect。可以用于分析一个未知的镜像文件(也可以分析一个容器),有备无患。在docker run的时候,能够做到有所准备。

为了更好的得出结论,以便于印证文章观点。那么,这里分析的镜像或容器,是基于下面这篇文章中,使用Dockerfile构建的docker镜像结果。

docker inspect命令预览

inspect的单词翻译为查看docker inspect可以作用于镜像,也可以作用于容器。两者的返回者结果略有不同。

docker inspect <image_id>

或者

docker inspect <container_id>

docker inspect的返回值是个json类似的字符串,可以使用-f 或者--format=来细化一下领域,只读取某一特定的json节点。特殊的是:这个format的格式是非常奇怪的,{{.<节点路径>}}。两个大括号外加一个点,然后是路径。

docker inspect -f '{{.<节点路径>}}' <容器名称或镜像名称>
docker inspect --format='{{.<节点路径>}}' <容器名称或镜像名称>

如下分析中,都是苏南大叔自己总结的。不排除会出现一些错误或者不全的。您可以根据自己的需求,自己总结下面的这些命令。总结的方式,也非常简单。你可以先不加-f参数,查看一下总体的json结构。找到你的目标位置后,写出节点路径即可。

注意,要写个绝对路径。大部分大家关心的内容都在{{.Config}}这个节点之中。当然,也不排除其它的节点位置。容器和镜像的inspect结果是不一致的,但是都有config这个总节点的。镜像的inspect结果中,还存在一个ContainerConfig节点。

所以,大部分情况下,你所需要的套路是这样的:

docker inspect -f '{{.Config.<节点名字>}}' <image_id或container_id>

未知docker镜像(容器)分析,docker inspect命令使用指南 - docker-inspect
未知docker镜像(容器)分析,docker inspect命令使用指南(图2-2)

端口分析

镜像:

docker inspect -f '{{.Config.ExposedPorts}}' <image_id>
docker inspect -f '{{.ContainerConfig.ExposedPorts}}' <image_id>

容器:

docker inspect -f '{{.Config.ExposedPorts}}' <container_id>

目录分析

镜像:

docker inspect -f '{{.Config.Volumes}}' <image_id>

对于镜像,这里还可以分析一个WokingDir信息。比如:

docker inspect -f '{{.Config.WorkingDir}}' <image_id>

容器:

docker inspect -f '{{.Config.Volumes}}' <container_id>
docker inspect -f '{{.Mounts}}' <container_id>

入口文件分析

docker inspect -f '{{.Config.Cmd}}' <image_id>
docker inspect -f '{{.Config.Entrypoint}}' <image_id>

环境变量分析

docker inspect -f '{{.Config.Env}}' <image_id>

对于运行中的容器,也可以使用docker exec -it <name> /bin/bash进入容器后,执行命令export,也可以看到具体的环境参数情况。

总结

当然,可以通过查看docker ps列表,获取容器的参数情况。大家自行试试即可。
更多docker相关经验文章,可以查看苏南大叔提供的下述链接地址:

 【源码】代码片段及相关软件点此获取

 【docker】秘籍文章入口,仅传授于有缘之人   docker

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!