Dockerfile — это текстовый файл, используемый для создания образов Docker. Он предоставляет ряд инструкций и конфигураций сборки для автоматизации и стандартизации процесса сборки образов Docker. Dockerfile создает новый образ Docker, последовательно выполняя каждую строку команд. Таким образом, выполнение команд неотделимо от написания и сборки Dockerfiles.
В Dockerfile команды могут выполняться несколькими способами:
RUN Заказ: RUN Команда является наиболее распространенным способом разрешить создание Docker Выполнение произвольных команд во время зеркалирования. Например:
RUN apt-get update && apt-get install -y python
CMD Заказ: CMD Команда используется для указания команды по умолчанию, которая будет выполняться при запуске контейнера. это может быть в Dockerfile появляется только один раз и должна быть последней командой. Например:
CMD ["python", "app.py"]
команда ТОЧКА ВХОДА: команда ТОЧКА ВХОДАиспользуется для указанияконтейнер При запуск выполняется по умолчанию Заказ и не поддерживает перезапись. Например:
ENTRYPOINT ["python", "app.py"]
SHELL Заказ: SHELL Команда используется для указания RUN в команде ОБОЛОЧКА. по умолчанию SHELL да /bin/sh -c, но также может использоваться в Dockerfile Другие, указанные в ОБОЛОЧКА. Например:
SHELL ["/bin/bash", "-c"]
Следует отметить, что основная разница между этими Заказизсуществовать заключается в том, когда выполнять Заказ.RUN. Команда выполняется во время сборки, CMD и ENTRYPOINT Выполняется при запуске контейнера. ОБОЛОЧКА может быть использован в RUN Укажите больше в команде SHELL параметры. существовать Dockerfile Эти команды можно комбинировать для выполнения более сложных операций.
RUN Заказда Dockerfile Команда, обычно используемая в , которая указывает на необходимость построения Docker Команда, выполняемая при зеркалировании.
RUN Заказфактически дасуществовать новый временный контейнерказнен. в указанном из Заказе и существовании. Этот процесс создает новые слои иззеркало, существующие окончательно из Docker Сохраните эти изменения на изображении.
Синтаксис команды ВЫПОЛНИТЬ:
RUN ["command", "param1", "param2"]
:используется для указаниябежатьиз Исполняемый файл и его необходимые параметры。RUN command1 && command2
:используется длясуществовать Запуск нескольких в одной строке Заказ,Чтобы сохранить Docker зеркалоиз слоев.один кусочек RUN Команда может отправить только один слой изображения, поэтому, чтобы минимизировать размер изображения, оно должно быть одного и того же слоя. RUN Заказказнен в нескольких заказах,ииспользоватьнемного хорошегоиз Создайте лучшие практики(Напримерудалитьненужныйизпакет программного обеспеченияи Временные файлы и т.д.)。
Обычно несколько Заказобъединитьиприезжатьодин кусочек RUN Выполнить по команде:
использовать && Подключить несколько заказов,использовать\ ветвь
использовать && Соединение нескольких Заказов позволяет объединить несколько Заказов в один. кусочек RUN Команды: если одна из команд не выполнена, последующие команды не будут выполнены. Например:
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:deadsnakes/ppa && \
apt-get install -y python3.6 && \
apt-get clean
Команда CMD используется в качестве команды запуска по умолчанию для образов Docker, указывая операции по умолчанию, которые необходимо выполнить при запуске контейнера.
Инструкция CMD может появиться в файле Docker только один раз. Если существует несколько инструкций CMD, вступит в силу только последняя инструкция CMD.
CMD Существует два вида формы заказа, соответственно. exec формаи shell форма:
Синтаксис инструкции CMD в форме EXEC следующий:
CMD ["executable","param1","param2"] # CMD ["python", "app.py"]
Среди них исполняемый Указывает, что изда запустит исполняемый файл или скрипт, param1, param2. Остальные параметры представляют собой параметры строки из Заказ программы, параметры можно опустить. Параметр команды даа JSON множество.
Синтаксис команды CMD в форме SHELL следующий:
CMD command param1 param2 # CMD python app.py
Среди них командование Указывает команду для запуска, параметр 1 и param2 является необязательным параметром командной строки.
Инструкция CMD может появиться в файле Docker только один раз. Если существует несколько инструкций CMD, вступит в силу только последняя инструкция CMD.
использовать SHELL формальный CMD Инструкции, Докер автоматически /bin/sh Начать через SHELL и бежать CMD Указанная команда обусловлена SHELL Обработка сигнала не поддерживается, можно использовать exec формальный CMD инструкция,Это может напрямую использовать механизм сигнализации.,И может добиться лучшей производительности и управления ресурсами.
команда ТОЧКА ВХОДАдля установка по умолчанию изконтейнер исполнение Заказ, с CMD Заказы похожие, разные изда команда ТОЧКА Настройки ВХОДА из Заказа не перезаписываются, и да, поскольку контейнер по умолчанию Заказ всегда сохраняется.
команда ТОЧКА Существует два типа ВХОДАформа:exec формаи shell Форма, конкретный синтаксис следующий:
ENTRYPOINT ["executable", "param1", "param2"]
в,executable
дасуществоватьконтейнер При запустить Запуск исполняемого файла или скрипта,param1
и param2
Параметры исполняемого файла или сценария соответственно. Параметры можно опустить.
ENTRYPOINT command param1 param2
# ENTRYPOINT ["/bin/sh", "-c", "exec <exec_command>"]
в,command
Представляет команду, которая будет запущена при запуске контейнера, в shell казнен в。param1
и param2
да command Параметры команды можно опустить.
команда ТОЧКА ВХОДА по умолчанию и CMD Значения команд по умолчанию могут существовать одновременно, а также комбинироваться друг с другом по желанию.
Их несколько, если команда ТОЧКА ВХОДА, действителен только последний заказ.
В то же время вы также можете использовать shell из exec
команда для достижения команда ТОЧКА ВХОДАиз exec форма, например:
ENTRYPOINT ["/bin/sh", "-c", "exec <exec_command>"]
в,<exec_command>
выражатьиспользоватьот Исполняемый файл Заказать.
SHELL команда используется в Dockerfile Указано в обкатке RUN Заказиз SHELL。SHELL Заказ Есть два видаформа:использовать SHELL Команда для изменения значения по умолчанию shell или в RUN Временные изменения в командах shell。
1.использовать SHELL Команда для изменения значения по умолчанию shell
Синтаксис команды SHELL:
SHELL ["executable", "parameters"] # SHELL ["/bin/bash", "-c"]
в,executable
это значение по умолчанию SHELL Исполняемый файлпрограмма,parameters
для установки SHELL Программа из параметров может быть опущена. существовать Dockerfile серединаиспользовать SHELL Команда для изменения значения по умолчанию shell может изменить весь Dockerfile Все в RUN
существовать RUN Команду можно передать SHELL Меняйте, когда придет заказ shell。использовать SHELL Заказ может преобразовать среду сборки в shell Контекст меняется, чтобы указать из shell,исуществовать RUN Выполнить по команде SHELL Заказ.существовать RUN Заказсерединаиспользовать SHELL Заказать грамматику для:
RUN ["/bin/sh", "-c", "SHELL command"]
# RUN ["/bin/sh", "-c", "SHELL=/bin/bash apt-get update"]
в,command
Некоторые выразили надежду, что существование будет временным shell казнен виз Заказ.
копироватькод
RUN ["/bin/sh", "-c", "SHELL=/bin/bash apt-get update"]
волясуществоватьвременныйиз bash shell казнен в apt-get update
Заказ.
Необходимо обратить внимание на,RUN в команде SHELL Заказсуществовать RUN Он будет автоматически очищен после завершения команды RUN. Следующая строка будет использовать по умолчанию. shell контекст, и нет предыдущего из SHELL Переменные среды наследуются в указанном.
Короче говоря,ШЕЛЛ. команда изменить Dockerfile серединаиз shell контекст, который можно передать SHELL Команда для изменения значения по умолчанию shell или в RUN Временные изменения в командах Оболочку можно менять по-разному в зависимости от реальных потребностей. Dockerfile серединаиз shell контекст.
Эта статья начинается с RUN Командование, CMD Заказ, команда ТОЧКА Четыре аспекта ВХОДА и SHELLЗаказ Dockerfile Представлен широко используемый заказ в из.
Среди них БЕГ команда используется в Docker зеркалоказнен в указать из Заказ и создать новый слой иззеркало, CMD Заказнодля установкисуществоватьконтейнер При запуск должен выполнить заказ по умолчанию и команду ТОЧКА ВХОДАнодля установкиконтейнер При По умолчанию при запускеиз используется «Заказ», и настройка «Из Заказ» не будет отменена. Кроме того, в этой статье объясняется, как существовать RUN Заказказнен в Несколько Заказ,какиспользовать SHELL Команда для изменения значения по умолчанию SHELL икаксуществовать RUN Временные изменения в командах SHELL изметод играмматика. Узнайте об этих часто используемых Dockerfile Команда может быть Docker Конструкция зеркала более эффективна и удобна.
имя команды | Время выполнения | описывать |
---|---|---|
RUN | время сборки | существовать Docker зеркалоказнен в Укажите из Заказ и создайте новый слой иззеркало. |
SHELL | время сборки | существоватьконтейнер При запуск необходимо выполнить по умолчанию Заказ |
CMD | При запуске | настраиватьконтейнер При при запуске по умолчанию установлено значение «Заказ», и настройка «Из Заказ» не будет отменена. |
ENTRYPOINT | При запуске | существовать RUN Временные изменения в командах SHELL |