我想在Dockerfile中运行带有$ _等特殊参数的bash命令。 我尝试了以下示例,但它似乎无法正常工作。如果我直接在bash中执行相同的命令,它就像魅力一样。有没有人知道我做错了什么?
$ RUN mkdir /foo && cd $_ && pwd
答案 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