显示 docker 镜像 image 的 cmd

2018-09-14  本文已影响0人  Yellowtail

已知

question

how to show cmd of docker image?
那么我们在生成完docker image 之后,如何去显示 这个CMD呢?(如果有的话)

solution

docker inspect -f '{{.Config.Cmd}}' <image:tag>

比如

[root]# docker inspect -f '{{.Config.Cmd}}' 2bb8384ba254
[dumb-init java -jar sms-web-1.0.jar --spring.profiles.active=dev]

扩展

这个命令是怎么来的呢?
我们可以执行一下docker inspect 2bb8384ba254
看看输出了什么

输出.png
太多了,截图没有截全

不过没关系,大致原理是可以看出来的
这个 Cmd 是在 Config 这个map里的

try 1

我有一个大胆的想法 docker inspect -f {{.Config.ArgsEscaped}} 12757ca59e37
预测是输出 true
果然

image.png

try 2

我们再次大胆的试试 docker inspect -f {{.Config.Healthcheck}} 12757ca59e37
预测是输出

{
    "Test": [
        "NONE"
    ]
}

但是

image.png
不符合预期,官网搜了搜,嗯,加个json 就可以指定输出为json格式
注意:命令多了两个单引号哦,不加会报错
image.png

try 3

经过上面两次尝试,可以发现{{}}里面的语法类似 jsonpath
(实际上是 go 模板,不过我不care...)
如果含有.会如何呢?
首先看下labels

image.png

我们尝试取一下io.kubernetes.container.name

[root@iZwz95w0dtnuuhgb2np2dmZ ~]# docker inspect -f {{.Config.Labels.io.kubernetes.container.name}} 12757ca59e37
<no value>

竟然没有取到,去谷歌搜搜,发现了一个用法,在这里

[root@iZwz95w0dtnuuhgb2np2dmZ ~]# docker inspect -f '{{index .Config.Labels "io.kubernetes.container.name"}}' 12757ca59e37
ms-sms

注意,

参考

https://stackoverflow.com/questions/30441035/how-to-find-the-cmd-command-of-a-docker-image
https://docs.docker.com/engine/reference/commandline/inspect/#get-an-instances-image-name
https://stackoverflow.com/a/33884893

上一篇下一篇

猜你喜欢

热点阅读