Sobes.tech
Junior

Какво са entrypoint и cmd в контекста на Docker?

sobes.tech AI

Отговор от AI

ENTRYPOINT определя командата, която ще бъде изпълнена при стартиране на контейнера. Ако при изпълнение на docker run бъдат предадени CMD или параметри на командата, те се добавят като аргументи към тази команда.

CMD предоставя аргументи по подразбиране за ENTRYPOINT или се изпълнява като отделна команда, ако ENTRYPOINT не е дефиниран. Ако при стартиране на контейнера бъдат предадени параметри, те заменят стойността на CMD.

Разлики:

Характеристика ENTRYPOINT CMD
Назначение Определя основната команда за изпълнение Предоставя аргументи или команда по подразбиране
Презаписване Изисква docker run --entrypoint Може да бъде презаписано с аргументите на docker run
Използване с ENTRYPOINT Аргументи за ENTRYPOINT Команда по подразбиране, ако няма ENTRYPOINT

Примери:

С използване на ENTRYPOINT и CMD:

# Dockerfile
FROM alpine:latest
ENTRYPOINT ["echo", "Здравей"]
CMD ["Свят!"]

При изпълнение на docker run вашият-образ ще се изпълни echo Здравей Свят! При изпълнение на docker run вашият-образ Вселена! ще се изпълни echo Здравей Вселена!

Само с CMD:

# Dockerfile
FROM alpine:latest
CMD ["echo", "Здравей Свят!"]

При изпълнение на docker run вашият-образ ще се изпълни echo Здравей Свят! При изпълнение на docker run вашият-образ echo Здравей Docker! ще се презапише CMD и ще се изпълни echo Здравей Docker!

Препоръчително е да използвате ENTRYPOINT за изпълнимия файл и CMD за предаване на стандартни параметри към този файл.