Поскольку я начал использовать Docker Ages назад, я иногда сталкиваюсь со сообщениями в блоге или видео, рассказывая в деталях, как разные два, но не могут объяснить, как и когда их использовать
С достаточным опытом …
Вы быстро понимаете, что каждая инструкция помогает в разных ситуациях.
Лучшее использование для въезда …
Чтобы установить основную команду изображения. Вы используете изображение как будто это была команда? Тогда Выходная точка это правильный выбор. В дополнение к этому, вы можете использовать CMD Для предоставления дополнительных аргументов командной строки.
Например: вы можете упаковать копать
Команда для запуска DNS-запросов с этим Dockerfile :
FROM ubuntu:18.04 RUN apt-get update &&\ apt-get install -qqy --no-install-recommends dnsutils ENTRYPOINT ["dig"] CMD ["--help"]
Обратите внимание, что я предоставил --help
Как параметр командной строки по умолчанию для контейнера, таким образом, если ни один не предоставляется, мы контейнер отображается страница справки. (Потому что вы должны любить своих пользователей, не так ли? 🙂)
Если вы сейчас создаете и пометите свой образ как Копание: последние
Вы можете легко запустить DNS-запросы от любой операционной системы!
# On your Windows or MacOs ❯ docker run dig google.com ; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7619 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 377 IN A 172.217.23.142 ;; Query time: 55 msec ;; SERVER: 192.168.65.1#53(192.168.65.1) ;; WHEN: Thu Sep 24 12:51:14 UTC 2020 ;; MSG SIZE rcvd: 44
КЛАССНО! 🔥
Забудьте о въезде …
Когда пользователи вашего контейнера еще не знакомы с тем, как работает enterPoint! Легко понравиться, добавив волшебные трюки в контейнер-запуск, но избегайте скрытия противной логики во всех расходах!
Используйте CMD для …
все остальное! Когда сомневаюсь, я всегда использую простой и простой CMD Отказ И если вы не уверены, что ваш контейнер должен сделать по умолчанию, просто дайте пользователям оболочку работать, так же просто, как это.
CMD ["bash"]
Что вы думаете?
Мне любопытно узнать, как вы используете enterpoint и cmd в ваших dockerfiles!
Спасибо за чтение! И не забудьте следовать за мной, если вы хотите увидеть больше контента такого!
Оригинал: «https://dev.to/mcastellin/entrypoint-vs-cmd-the-dockerfile-dilemma-gn4»