Каков стандартный WORKDIR в докере?

Мы можем использовать WORKDIR, чтобы установить каталог как рабочий каталог в Dockerfile, но какое значение по умолчанию, если мы не установим?

Ответ 1

docker workdir

говорит, что это /, поэтому корневой каталог

Ответ 2

По умолчанию действительно /, как указано в другом месте. Тем не менее, стоит упомянуть, что вы почти никогда не будете запускаться из пустого образа докера (FROM scratch), поэтому WORKDIR, вероятно, устанавливается базовым образом, который вы используете.

Например, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template имеет WORKDIR $CATALINA_HOME, а https://github.com/dockerfile/ubuntu/blob/master/Dockerfile имеет WORKDIR /root. (https://hub.docker.com/r/base/archlinux/~/dockerfile/ однако не использует WORKDIR.)

Поэтому лучше установить свой собственный WORKDIR явно.

Ответ 3

Рабочим каталогом по умолчанию для запуска двоичных файлов в контейнере является корневой каталог (/), но разработчик может установить другой каталог с помощью команды Dockerfile WORKDIR. Оператор может переопределить это с помощью:

-w="": Working directory inside the container

здесь: https://docs.docker.com/engine/reference/run/#workdir

Ответ 4

Поскольку нет пользователей, кроме корня в только что родившемся докере или контейнере, строго говоря. Таким образом, для каждого изменения будет фиксация для этого контейнера, как сказал этот парень. Следовательно, pwd этого или по вашему запросу WORKDIR имеет / root по умолчанию и каждый раз, когда вы выполняете команду /bin/bash следующим образом:

$docker exec -i -t 53f784fwer54/bin/bash

на запущенном контейнере он поместит вас здесь / в корневой каталог.