наstartup.
CMD Инструкция CMD имеет три формы:
CMD ["исполняемый файл", "param1", "param2"] (форма exec, этопредпочтительная форма) CMD ["param1", "param2"] (в качестве параметров по умолчанию для ENTRYPOINT) команда CMD param1 param2 (форма оболочки) В Dockerfile может быть только одна инструкция CMD.Если вы укажете более одного CMD, то вступит в силу только последний CMD.
Основная цель CMD - предоставить значения по умолчанию для исполняющего контейнера.Эти значения по умолчанию могут включать в себя исполняемый файл или могут не включать исполняемый файл, и в этом случае вы также должны указать инструкцию ENTRYPOINT.
Примечание: Если CMD используется для предоставления аргументов по умолчанию для инструкции ENTRYPOINT, то оба CMDи инструкции ENTRYPOINT должны указываться в формате массива JSON.
Примечание. Форма exec анализируется как массив JSON, что означает, что вы должны использовать двойные кавычки («) вокруг слов, а не одинарных кавычек (').
Примечание. В отличие от формы оболочки, форма exec не вызывает командную оболочку.Это означает, что обычная обработка оболочки не происходит.Например, CMD ["echo", "$ HOME"] не будет выполнять подстановку переменных в $ HOME.Если вы хотите обработать оболочку, то либо используйте форму оболочки, либо выполните оболочку напрямую, например: CMD ["sh", "-c", "echo $ HOME"].При использовании формы exec и непосредственном выполнении оболочки, как в случае с формой оболочки, именно оболочка выполняет расширение переменной среды, а не docker.
При использовании в форматах оболочки или exec,Инструкция CMD устанавливает команду, которая будет выполняться при запуске образа.
Если вы используете форму оболочки CMD, то она будет выполнена в / bin / sh -c:
FROM ubuntuCMD эхо "Это тест".|wc - если вы хотите запустить свой без оболочки, вы должны выразить команду в виде массива JSON и указать полный путь к исполняемому файлу.Эта форма массива является предпочтительным форматом CMD.Любые дополнительные параметры должны быть индивидуально выражены в виде строк в массиве:
FROM ubuntu CMD ["/ usr / bin / wc", "- help"] Если вы хотите, чтобы ваш контейнер запускал один и тот же исполняемый файл каждый развремя, то вы должны рассмотреть возможность использования ENTRYPOINT в сочетании с CMD.См. ENTRYPOINT.
Если пользователь указывает аргументы для запуска докера, он переопределяет значение по умолчанию, указанное в CMD.
Примечание. Не путайте RUN с CMD.RUN фактически запускает команду и фиксирует результат;CMD ничего не выполняет во время сборки, но указывает целевую команду для образа.