I Докер добавляет ли CMD — инструкция слой?

#docker #docker-compose #dockerfile

Вопрос:

Я проверил много документов и даже книг, трудно сказать, не добавляет ли инструкция CMD в файле Dockerfile слой.

КБ из Докера говорит «да», это неправильно?

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

синтаксис=докер/файл докера:1

ИЗ ubuntu:КОПИЯ 18.04 . /запуск приложения make /приложение CMD python /app/app.py

Каждая инструкция создает один слой:

FROM создает слой из образа докера ubuntu:18.04. СКОПИРУЙТЕ добавленные файлы из текущего каталога вашего клиента Docker. ЗАПУСК создает ваше приложение с помощью make. CMD указывает, какую команду запускать в контейнере.

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

Ответ №1:

В каждой строке Dockerfile будет добавлен слой include CMD , вы можете ссылаться на терминологию слоя:

Слой

Изображения состоят из слоев. Каждый слой представляет собой набор изменений файловой системы. Слои не имеют метаданных конфигурации, таких как переменные среды или аргументы по умолчанию — это свойства изображения в целом, а не какого-либо конкретного слоя.

Вы могли видеть, что слой на самом деле-это просто изменения, внесенные в файловую систему. Поэтому, если ваша строка Dockerfile действительно сделала что-то, что делает изображение другим, то она добавит слой.

Конечно, все еще есть некоторые строки, которые не изменят изображение docker, например, директивы синтаксического анализатора:

Директивы синтаксического анализатора являются необязательными и влияют на то, как обрабатываются последующие строки в файле Dockerfile. Директивы синтаксического анализатора не добавляют слои в сборку и не будут отображаться в качестве шага сборки.

Но эти вещи, включая комментарии, на самом деле ничего не сделали для окончательного изображения. Поскольку они не меняли изображение, они не добавляли слой.

Кроме того, вы можете использовать docker history <Image ID> его для проверки после пробной версии.