Мы можем использовать WORKDIR
для установки каталога в качестве рабочего каталога Dockerfile
, но какое значение по умолчанию, если мы не устанавливаем?
docker
dockerfile
Freewind
источник
источник
RUN pwd
Ответы:
docker workdir
говорит, что это
/
так, поэтому корневой каталогисточник
Значение по умолчанию действительно такое,
/
как указано в другом месте. Тем не менее, стоит упомянуть, что вы почти никогда не будете работать с пустым образом докера (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
явно указать свой собственный .источник
Рабочим каталогом по умолчанию для запуска двоичных файлов в контейнере является корневой каталог (
/
), но разработчик может установить другой каталог с помощью команды Dockerfile WORKDIR. Оператор может изменить это с помощью:Здесь: https://docs.docker.com/engine/reference/run/#workdir
источник
Ведь в только что родившемся докере или контейнере, собственно говоря, нет пользователей, кроме рута. Итак, для каждого изменения будет фиксироваться этот контейнер, как сказал этот парень . Следовательно, pwd этого или, как вы просили, WORKDIR
/
по умолчанию является root, и каждый раз, когда вы выполняете/bin/bash
следующее:$docker exec -i -t 53f784fwer54 /bin/bash
на работающем контейнере он поместит вас сюда,
/
в корневой каталог.источник
/
неверен и не имеет значения. Рабочий каталог нового контейнера по умолчанию совпадает с рабочим каталогом изображения по умолчанию. Например, я только что запустилdocker exec -ti <my_app> /bin/bash;
новый процесс bashpwd
и увидел, что это рабочий каталог/app
.