如果我从具有自己的入口点/ cmd的图像构建和运行带入口点/ cmd的docker会发生什么?

问题描述 投票:0回答:1

假设我有一个带入口点/ 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. Base cmd和layer 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会不同吗?

先感谢您。

linux docker cmd docker-image docker-build
1个回答
3
投票

根据docs

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

而对于ENTRYPOINT

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

如果你有CMDENTRYPOINT的组合,请参阅docs的表格以供参考:

enter image description here

此外,here也回答了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.