Если я использую env var в моем Dockerfile, запечатываются ли env var в образ? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть Dockerfile, в котором я использую env var как часть моей команды точки входа, например: ENTRYPOINT "./docker-entrypoint.sh" ${MY_VAR}.

Установка MY_VAR на разные значения при запуске контейнеров, кажется, работает, но я не понимаю, как изображение строится без запекания в переменной.Как env vars интерполируются в изображениях после сборки?

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Установка ENV в Dockerfile обновляет конфигурацию изображения (это некоторые метаданные json, хранящиеся вместе с изображением).При запуске контейнера метаданные изображения используются для заполнения настроек контейнера по умолчанию.Поскольку они являются значениями по умолчанию, вы можете переопределить переменные по мере необходимости из командной строки docker run или в файле compose.Поскольку вы можете переопределить их во время выполнения, эти значения на самом деле не «запекаются» в нечто подобное изображению, если вы не используете их в команде RUN во время сборки образа.

Неизменяемость изображений является ссылкой наслои изображения.Как только слой файловой системы создан для изображения, вы не можете изменить этот слой из Docker.Вы можете расширить слой другим слоем (заменяя или удаляя содержимое из предыдущего слоя).И вы можете создать новый слой и указать свое изображение на этот новый набор слоев.Однако содержимое слоя, на которое ссылается контрольная сумма sha256, не изменяется контейнером или другими этапами сборки, что позволяет разделять слои между несколькими изображениями и контейнерами.

0 голосов
/ 12 июня 2019

Это информация, которую я искал ( документы докера ), как Серхио сказал выше, что некоторые части изображения, которые разработчики могут захотеть установить во время выполнения, специально перезаписываются, и ENTRYPOINT является одним из них.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...