1. Обзор
Образы Docker содержат набор последовательных инструкций, которые служат шаблоном для создания контейнера. В этом руководстве мы узнаем, как изменить каталог при создании образа Docker или при запуске контейнера с использованием образа.
2. Использование инструкции WORKDIR
Во-первых, давайте начнем с создания контейнера Docker, используя готовый образ ubuntu:latest:
Мы видим, что как только контейнер поднят, текущий каталог устанавливается как /.
Далее, допустим, мы хотим изменить этот каталог на /tmp при запуске контейнера. Мы можем сделать это, используя инструкцию WORKDIR внутри пользовательского образа, который использует ubuntu:latest в качестве базового образа:
Прежде чем мы сможем запустить контейнер, используя этот образ, нам нужно создать образ. Итак, давайте продолжим и создадим образ custom-ubuntu:v1:
Наконец, давайте запустим контейнер, используя образ custom-ubuntu:v1, и проверим текущий каталог:
Похоже, мы поняли это правильно!
3. Использование опции –workdir
Использование инструкции WORKDIR рекомендуется в большинстве случаев, когда мы хотим изменить каталог при создании образа Docker. Тем не менее, если наш вариант использования ограничен изменением каталога при запуске контейнера, то мы можем добиться этого с помощью параметра –workdir:
Глядя на это, мы можем оценить краткость команды и тот факт, что в этом случае нам не нужно было создавать собственное изображение.
4. Использование команды cd
В Linux команда cd является стандартным способом изменения каталога для большинства случаев использования. В то же время при работе с некоторыми инструкциями докера, такими как RUN, CMD и ENTRYPOINT, мы можем использовать команду cd для изменения каталога для текущей команды в контексте.
Начнем с написания файла custom-ubuntu-v2.dockerfile для использования инструкции RUN с командой cd:
Мы видим, что намерение состоит в том, чтобы записать «пример текста» в файл /tmp/data.txt.
Затем добавим инструкцию ENTRYPOINT для запуска bash в качестве команды по умолчанию при запуске контейнера. Кроме того, мы используем команду cd, чтобы изменить текущий каталог на каталог /tmp:
Двигаясь дальше, давайте создадим собственный образ:
Наконец, давайте запустим контейнер, используя образ custom-ubuntu:v2, и проверим выполнение команд:
Мы видим, что результаты обеих команд изменения каталога соответствуют ожиданиям. Кроме того, мы должны помнить, что WORKDIR остается рекомендуемым способом. Тем не менее, для простых случаев использования мы можем использовать команду cd в сочетании с инструкциями RUN, ENTRYPOINT или CMD.
5. Вывод
В этой статье мы узнали о разных подходах к смене каталога при работе с образами Docker или запуске контейнера.
Оригинал статьи: https://www.baeldung.com/docker-change-directory