Docker:RUN cd ...无法按预期工作

时间:2013-07-26 22:25:14

标签: docker

以下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无效

为什么?

2 个答案:

答案 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