Следующий файл Docker:
FROM ubuntu:12.10
RUN mkdir tmp123
RUN cd tmp123
RUN pwd
имеет выход:
Uploading context 10240 bytes
Step 1 : FROM ubuntu:12.10
---> b750fe79269d
Step 2 : RUN mkdir tmp123
---> Running in d2afac8a11b0
---> 51e2bbbb5513
Step 3 : RUN cd tmp123
---> Running in 4762147b207c
---> 644801121b92
Step 4 : RUN pwd
---> Running in 3ed1c0f1049d
/
---> eee62a068585
при построении (команда сборки докеров)
похоже, что RUN cd tmp123 не имеет эффекта
Зачем?
Ответ 1
Это на самом деле ожидается.
Докер файл - это не что иное, как обертка для запуска докеры + фиксация докеров.
FROM ubuntu:12.10
RUN mkdir tmp123
RUN cd tmp123
RUN pwd
То же самое, что и делать:
CID=$(docker run ubuntu:12.10 mkdir tmp123); ID=$(docker commit $CID)
CID=$(docker run $ID cd tmp123); ID=$(docker commit $CID)
CID=$(docker run $ID pwd); ID=$(docker commit $CID)
Каждый раз, когда вы RUN, вы создаете новый контейнер, и поэтому pwd имеет значение "/".
Если вам это нравится, вы можете открыть вопрос о github, чтобы добавить инструкцию CHDIR в файл Docker.
Ответ 2
Может быть, вы можете попробовать это; Я не уверен, и я не могу попробовать. Если это не сработает, я надеюсь, что вы не будете снижать ставку.
Просто:
RUN 'cd tmp123 ; pwd'
Вместо
RUN cd tmp123
RUN pwd