Dockerfile:带有特殊参数的RUN命令

时间:2015-05-18 11:54:46

标签: docker dockerfile

我想在Dockerfile中运行带有$ _等特殊参数的bash命令。 我尝试了以下示例,但它似乎无法正常工作。如果我直接在bash中执行相同的命令,它就像魅力一样。有没有人知道我做错了什么?

$ RUN mkdir /foo && cd $_ && pwd

1 个答案:

答案 0 :(得分:5)

它取决于基本容器中的shell。例如,ubuntu使用破折号,将默认shell更改为bash有助于获得您期望的结果:

FROM ubuntu
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN mkdir /foo && cd $_ && pwd

结果:

docker build --rm .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM ubuntu
 ---> d0955f21bf24
Step 1 : RUN rm /bin/sh && ln -s /bin/bash /bin/sh
 ---> Using cache
 ---> c90ef9fd9710
Step 2 : RUN mkdir /foo && cd $_ && pwd
 ---> Running in 8e1d943a6b60
/foo
 ---> 1871918ee02c
Removing intermediate container 8e1d943a6b60
Successfully built 1871918ee02c