Man*_*hit 5 containers docker docker-image
我试图弄脏码头工人。我知道CMD或ENTRYPOINT用于指定docker image的start / runnable命令,CMD并被覆盖ENTRYPOINT。但是我不知道,当父泊坞窗映像也具有CMDOR ENTRYPOINT或BOTH 时,它是如何工作的?
子映像是否从父docker映像继承那些值?如果是这样,那么ENTRYPOINT父图像CMD中的图像是否会覆盖子图像中的图像?
我知道这样的问题已经在https://github.com/docker/compose/issues/3140讨论过。但是,讨论的时间已经很久了(2-3年之前),并且无法清晰回答我的问题。
提前致谢。
ENTRYPOINT 不会覆盖 CMD,它们只是代表结果命令的一部分并且存在以使生活更轻松。每当容器启动时,进程 1 的命令被确定为 ENTRYPOINT + CMD,因此通常 ENTRYPOINT 只是二进制文件的路径,而 CMD 是该二进制文件的参数列表。CMD 也可以很容易地从命令行覆盖。
所以,再一次,这只是让生活更轻松并使容器表现得像常规二进制文件一样的事情 - 如果您有man容器,您可以将入口点设置为/usr/bin/mancmd 为man。因此,如果您只是启动容器,docker 将执行/usr/bin/man man,但如果您运行类似的内容docker run man docker,则生成的容器命令将是/usr/bin/man docker- 入口点保持不变,cmd 更改,并且生成的启动容器命令只是这些命令的简单合并。
ENTRYPOINT 和 CMD 都是从父层(图像)继承的,除非被覆盖,所以如果你从图像 X 继承并重新定义 CMD,你仍然会拥有相同的 ENTRYPOINT 反之亦然. 但是,正如下面提到的@BMitch,更改子图像中的 ENTRYPOINT 将有效地重置 CMD。
| 归档时间: |
|
| 查看次数: |
2365 次 |
| 最近记录: |