Ми можемо використовувати, 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