Что произойдет, если я соберу и запусту докер с точкой входа / cmd из образа, который имеет собственную точку входа / cmd? - PullRequest
0 голосов
/ 31 августа 2018

Предположим, у меня есть базовое изображение с точкой входа / 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 голосов
/ 31 августа 2018

Согласно документам :

В Dockerfile может быть только одна инструкция CMD. Если вы укажете более одной CMD, то вступит в силу только последняя CMD.

А для ENTRYPOINT:

Только последняя инструкция ENTRYPOINT в Dockerfile будет иметь эффект.

А если у вас есть комбинация CMD и ENTRYPOINT, см. Таблицу из документов для справки:

enter image description here

Кроме того, на этот вопрос также был дан ответ здесь

...