以下Dockerfile:
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
构建时(docker build命令)
看来RUN cd tmp123无效
为什么?答案 0 :(得分:64)
实际上是预期的。
dockerfile只不过是docker run + docker commit的包装器。
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)
每次运行时,都会生成一个新容器,因此pwd为'/'。
如果您愿意,可以在github上打开一个问题,以便向Dockerfile添加CHDIR指令。
答案 1 :(得分:11)
也许你可以试试这个;我不确定,我不能尝试。如果它不起作用,我希望你不要贬低。
只需:
RUN 'cd tmp123 ; pwd'
而不是
RUN cd tmp123
RUN pwd