Ми можемо використовувати, WORKDIR
щоб встановити каталог як робочий каталог Dockerfile
, але яке значення за замовчуванням, якщо ми не встановимо?
Ми можемо використовувати, WORKDIR
щоб встановити каталог як робочий каталог Dockerfile
, але яке значення за замовчуванням, якщо ми не встановимо?
Відповіді:
За замовчуванням справді /
вказано деінде. Варто зазначити, однак, що ви майже ніколи не будете запускати з порожнього образу докера ( FROM scratch
), тому WORKDIR
це, швидше за все, встановлюється базовим зображенням, яке ви використовуєте.
Наприклад, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template has WORKDIR $CATALINA_HOME
, і https://github.com/dockerfile/ubuntu/blob/master/Dockerfile has WORKDIR /root
. ( https://hub.docker.com/r/base/archlinux/~/dockerfile/ не використовує WORKDIR
.)
Тому найкраще WORKDIR
чітко встановити власні .
Типовим робочим каталогом для запуску двійкових файлів у контейнері є кореневий каталог ( /
), але розробник може встановити інший каталог за допомогою команди Dockerfile WORKDIR. Оператор може замінити це за допомогою:
-w="": Working directory inside the container
Оскільки немає користувачів, крім кореня в щойно народженому докері або контейнері, строго кажучи. Отже, за кожну зміну буде зроблено коміт для цього контейнера, як сказав цей хлопець . Отже, pwd цього або, як ви запитали, WORKDIR /
за замовчуванням є root, і кожного разу, коли ви виконуєте /bin/bash
такий:
$docker exec -i -t 53f784fwer54 /bin/bash
на запущеному контейнері це помістить вас сюди /
в кореневу папку.
/
є неправильним і неактуальним. Типовий робочий каталог нового контейнера такий же, як робочий каталог зображення за замовчуванням. Наприклад, я щойно запустив docker exec -ti <my_app> /bin/bash;
новий процес bash pwd
, і бачу, що робочий каталог є /app
.
RUN pwd