Найти в Дзене

Как изменить каталог в Docker

Оглавление

1. Обзор

Образы Docker содержат набор последовательных инструкций, которые служат шаблоном для создания контейнера. В этом руководстве мы узнаем, как изменить каталог при создании образа Docker или при запуске контейнера с использованием образа.

2. Использование инструкции WORKDIR

Во-первых, давайте начнем с создания контейнера Docker, используя готовый образ ubuntu:latest:

-2

Мы видим, что как только контейнер поднят, текущий каталог устанавливается как /.

Далее, допустим, мы хотим изменить этот каталог на /tmp при запуске контейнера. Мы можем сделать это, используя инструкцию WORKDIR внутри пользовательского образа, который использует ubuntu:latest в качестве базового образа:

-3

Прежде чем мы сможем запустить контейнер, используя этот образ, нам нужно создать образ. Итак, давайте продолжим и создадим образ custom-ubuntu:v1:

-4

Наконец, давайте запустим контейнер, используя образ custom-ubuntu:v1, и проверим текущий каталог:

-5

Похоже, мы поняли это правильно!

3. Использование опции –workdir

Использование инструкции WORKDIR рекомендуется в большинстве случаев, когда мы хотим изменить каталог при создании образа Docker. Тем не менее, если наш вариант использования ограничен изменением каталога при запуске контейнера, то мы можем добиться этого с помощью параметра –workdir:

-6

Глядя на это, мы можем оценить краткость команды и тот факт, что в этом случае нам не нужно было создавать собственное изображение.

4. Использование команды cd

В Linux команда cd является стандартным способом изменения каталога для большинства случаев использования. В то же время при работе с некоторыми инструкциями докера, такими как RUN, CMD и ENTRYPOINT, мы можем использовать команду cd для изменения каталога для текущей команды в контексте.

Начнем с написания файла custom-ubuntu-v2.dockerfile для использования инструкции RUN с командой cd:

-7

Мы видим, что намерение состоит в том, чтобы записать «пример текста» в файл /tmp/data.txt.

Затем добавим инструкцию ENTRYPOINT для запуска bash в качестве команды по умолчанию при запуске контейнера. Кроме того, мы используем команду cd, чтобы изменить текущий каталог на каталог /tmp:

-8

Двигаясь дальше, давайте создадим собственный образ:

-9

Наконец, давайте запустим контейнер, используя образ custom-ubuntu:v2, и проверим выполнение команд:

-10

Мы видим, что результаты обеих команд изменения каталога соответствуют ожиданиям. Кроме того, мы должны помнить, что WORKDIR остается рекомендуемым способом. Тем не менее, для простых случаев использования мы можем использовать команду cd в сочетании с инструкциями RUN, ENTRYPOINT или CMD.

5. Вывод

В этой статье мы узнали о разных подходах к смене каталога при работе с образами Docker или запуске контейнера.

Оригинал статьи: https://www.baeldung.com/docker-change-directory