Skip to content

CMD

CMD ["echo", "Hello World"]
або
CMD echo “Hello World”
echo - команда Hello World - аргументи команди

Під час запуску docker контейнеру є можливість перезапису команди CMD :

docker run cmd:1.0 echo "new message"
docker run cmd:1.0 printenv
Тут echo “Hello World” виконано не буде. + Якщо сам Dockerfile містить декілька CMD то виконається остання

ENTRYPOINT

Зазвичай вказують в Dockerfile та не змінюють (лише в цілях тестування в docker run за включем --entrypoint можна змінити). ENTYPOINT використовують більше як запуск конкретної програми, а вже CMD для аргументів.

ENTRYPOINT ["echo"]
CMD ["Hello World"]

docker run cmd:1.0 printenv Перезапишеться CMD ["Hello World"] і вивід у терміналі буде:

printenv
(просто слово як аргумент від echo)

FROM alpine:3.18
ENTRYPOINT ["echo", "Hello"]
CMD ["Evgeniy"]
docker run cmdenv:1.0 Dear Student Виведе Hello Dear Student Інструкцією ENTRYPOINT ми визначили команду і параметр для неї, які будуть виконуватись при старті контейнера — echo Hello. Цю команду не можна перевизначити. Також ми задали додатковий параметр, який можна перезадати при запуску контейнера.

Підсумуємо:

  • ENTRYPOINT та CMD можна використати, щоб запусти основний процес в контейнері. Команду в CMD можна перевизначити, а в ENTRYPOINT — ні, лише задати додаткові параметри.
  • ENTRYPOINT використовуй, коли пишеш Dockerfile, який має виконуватись як програма, і коли ти не хочеш, щоб основну команду можна було перевизначити.
  • CMD використовуй, щоб задати додаткові параметри за замовчуванням для команди в ENTRYPOINT. Таким чином користувач Dockerfile зможе перевизначити їх при потребі.