🐳 Как переопределить ENTRYPOINT с помощью docker run

Как изменить ENTRYPOINT в Docker

by itisgood

Введение

Инструкция ENTRYPOINT определяет, какую команду должен выполнить контейнер Docker при запуске.

Хотя ENTRYPOINT нельзя отменить на постоянной основе, команда docker run позволяет пользователям временно заменить ее.

В этом руководстве вы узнаете, как переопределить ENTRYPOINT с помощью команды docker run.

🐳 Разница между ENTRYPOINT и CMD в Dockerfile

Объяснение ENTRYPOINT в Docker

ENTRYPOINT – это инструкция Dockerfile, которая указывает Docker, какую команду следует выполнить после инициализации контейнера.

Это неизменяемая инструкция, т. е. аргументы во время выполнения не могут ее отменить.

Это свойство делает инструкцию полезной при создании специализированных контейнеров для приложений, веб-серверов и скриптов.

В докерфайлах ENTRYPOINT часто используется в сочетании с директивой CMD.

Основное различие между CMD и ENTRYPOINT заключается в том, что демон Docker игнорирует CMD, если пользователь передает другой аргумент во время выполнения.

Более подробно:

🐳 Разница между ENTRYPOINT и CMD в Dockerfile

По этой причине ENTRYPOINT используется для указания команды, а CMD – для указания аргумента по умолчанию.

Например, приведенный ниже Dockerfile определяет образ Docker под названием test-override.

Директива ENTRYPOINT указывает Docker на выполнение команды echo, а CMD определяет «Hello, World!» в качестве аргумента по умолчанию.

Например:

FROM ubuntu
MAINTAINER test-user 
RUN apt update
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]

Docker инициирует контейнер, когда пользователь выполняет следующую команду docker run:

docker run test-override

Система выполняет директиву ENTRYPOINT, передавая эхо аргумента по умолчанию в командный вывод.

Однако если пользователь указывает пользовательский аргумент в команде docker run, Docker игнорирует инструкцию CMD:

docker run test-override new-argument

В выводе будет отображен новый аргумент.

Переопределение ENTRYPOINT с помощью docker run

В примере выше показано, что добавление нового аргумента отменяет директиву CMD, но ENTRYPOINT остается прежним.

Чтобы переопределить директиву ENTRYPOINT во время выполнения, добавьте опцию –entrypoint к команде docker run:

docker run [options] --entrypoint [new_command] [docker_image]

Следующая команда отменяет команду echo по умолчанию из предыдущего примера и запускает контейнер в интерактивном режиме:

sudo docker run -it --entrypoint /bin/bash test-override

В выводе появится приглашение оболочки контейнера.

Примечание: переопределение ENTRYPOINT является временным. Как только пользователь выйдет из контейнера и запустит его снова с помощью стандартной команды docker run, Docker выполнит инструкцию ENTRYPOINT по умолчанию.

Заключение

В этом уроке рассказывалось о директиве ENTRYPOINT и о том, как переопределить ее во время выполнения.

В нем обсуждалась связь между командой docker run и ENTRYPOINT, а также объяснялось, как использовать опцию –entrypoint.

 

Loading

You may also like

Leave a Comment