如果我从具有自己入口点/ cmd的映像中使用入口点/ cmd构建和运行泊坞窗,会发生什么情况?

时间:2018-08-31 08:28:16

标签: linux docker cmd docker-image docker-build

假设我有一个带有入口点/ cmd的基本图像,并且在其上构建的新层也有一个入口点/ cmd。

例如:

基础:

    entrypoint ["base-start.sh"]
    cmd ["-initialize"]

假设他们将输出时间戳和类似这样的消息

    2018-08-31 15:00:00 base image initializing(2 min remaining).
    2018-08-31 15:02:00 base image initialized.

新层:

    cmd /layer-start.sh

假设输出:

    2018-08-31 15:00:00 layer cmd executed.

现在我想知道它们都将被执行,如果执行,执行顺序是什么?

结果是哪个?

  1. 基本cmd和图层cmd并行开始。

    2018-08-31 15:00:00 base image initializing(2 min remaining).
    2018-08-31 15:00:00 layer cmd executed.
    2018-08-31 15:02:00 base image initialized.
    
  2. 基本cmd退出后,图层cmd开始。

    2018-08-31 15:00:00 base image initializing(2 min remaining).
    2018-08-31 15:02:00 base image initialized.
    2018-08-31 15:02:01 layer cmd executed.
    
  3. 基本图像cmd被覆盖。

    2018-08-31 15:00:00 layer cmd executed.
    

如果基本映像直接使用cmd而不是入口点+ cmd,那么Senario是否会有所不同?

谢谢。

1 个答案:

答案 0 :(得分:3)

按照docs

  

在Dockerfile中只能有一条CMD指令。如果您列出多个CMD,则只有最后一个CMD才会生效。

对于ENTRYPOINT

  

只有Dockerfile中的最后一条ENTRYPOINT指令才会生效。

如果同时使用CMDENTRYPOINT,请参阅docs中的表格以供参考:

enter image description here

此外,here

也对此进行了回答。