Это старая версия документа!


Helper plugin linkback is not available or invalid.

Dockerfile

  • RUN. RUN, в основном используемый для создания образов и установки приложений и пакетов, создает новый слой поверх существующего образа, фиксируя результаты.
  • CMD. Устанавливает параметры по умолчанию, которые можно переопределить из интерфейса командной строки Docker (CLI) при запуске контейнера.
  • ENTRYPOINT. Параметры по умолчанию, которые нельзя переопределить, когда контейнеры Docker запускаются с параметрами CLI.
В общем случае у вас должен быть Dockerfile CMD, а не Compose command:. Если не определить ни одной из них, то получите сообщение об ошибке.
  • Если во время выполнения определена только одна из инструкций, то и CMD и ENTRYPOINT будут иметь одинаковый эффект.
  • Те же результаты будут, если использовать CMD вместо ENTRYPOINT.
Режим Пример Формат запуска Завершение работы $PATH
SHELL ENTRYPOINT ping www.ya.ru /bin/sh -c ping www.ya.ru - [ ]
EXEC :!: ENTRYPOINT ["ping", "www.ya.ru"] ping www.ya.ru CTRL-C [x]

  • Если используется режим shell для ENTRYPOINT, CMD игнорируется.
  • При использовании режима exec для ENTRYPOINT аргументы CMD добавляются в конце.
  • При использовании режима exec для инструкции ENTRYPOINT необходимо использовать режим exec и для инструкции CMD. Если этого не сделать, Docker попытается добавить sh -c в уже добавленные аргументы, что может привести к некоторым непредсказуемым результатам.
  • Инструкции ENTRYPOINT и CMD могут быть переопределены с помощью флагов командной строки.
  • Все вышеперечисленные факты справедливы, но разработчики имеют возможность переопределять флаги в команде docker run
  • Используйте ENTRYPOINT, если вы не хотите, чтобы разработчики изменяли исполняемый файл, который запускается при запуске контейнера. Вы можете представлять, что ваш контейнер – исполняемая оболочка.
  • Используйте только CMD (без определения ENTRYPOINT), если требуется, чтобы разработчики могли легко переопределять исполняемый файл. Если точка входа определена, исполняемый файл все равно можно переопределить, используя флаг –entrypoint.

command

В файле Compose переопределяет CMDDockerfile. Есть некоторые незначительные синтаксические различия (в частности, Compose никогда не будет автоматически вставлять sh -cза вас оболочку оболочки), но они контролируют одно и то же в метаданных контейнера.

Однако помните, что помимо Compose существуют и другие способы запуска контейнера. docker run не прочитает ваш docker-compose.yml файл и не увидит эту command: он также не читается такими инструментами, как Kubernetes. Если вы встроите Dockerfile CMD в, оно будет использовать во всех вариантах.

Переопределение действительно необходимо command:в том случае, если вам нужно запустить основной процесс, отличный от стандартного, для контейнера.

endpoint

Ссылки

 2023/06/18 17:49, ,
 2025/02/26 19:57, , ,
 2025/11/15 03:42, , , , , , , ,
 2025/11/24 14:12, , , , , , , ,
 2025/11/20 00:14, , , , ,
 2025/11/19 12:25, , , ,
 2025/11/25 00:19, , , , , , , ,
 2025/11/19 11:12, , , ,
 2016/12/05 00:08, , , , , , , , ,
 2024/05/02 19:24,
 2025/02/10 11:29, , , , , , , , ,
 2024/05/02 00:11,
 2015/10/13 09:01, , , , , , ,
 2019/07/30 10:46, , , , , , , , ,
 2016/12/05 00:09, , , , , , ,
 2016/12/05 00:08, , , , , , ,
 2016/12/05 00:47, , , , , , ,
 2018/02/28 22:23, , , , , , ,