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