docker:运行CD …没有按预期工作

以下Dockerfile:


从Ubuntu的:12.10
运行mkdir tmp123
运行cd tmp123
 RUN pwd

有输出:


上传上下文10240字节
第1步:从Ubuntu的:12.10
  ---> b750fe79269d
步骤2:运行mkdir tmp123
  --->在d2afac8a11b0中运行
  ---> 51e2bbbb5513
步骤3:运行cd tmp123
  --->运行在4762147b207c
  ---> 644801121b92
第四步:运行pwd
  --->在3ed1c0f1049d中运行
 /
  ---> eee62a068585

build造时(docker build命令)

看起来RUN CD tmp123没有效果

为什么?

它实际上是预期的。

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上打开一个问题,以添加一个CHDIR指令到Dockerfile。

可能是你可以试试这个,我不确定。 我无法尝试。 如果不行,希望不要倒退。

只是:

 RUN 'cd tmp123 ; pwd' 

代替

 RUN cd tmp123 RUN pwd