我从docker hub下载了ubuntu基本映像。现在我正在尝试基于ubuntu映像构建新映像。但是,我希望ubuntu映像的默认命令是" / bin / bash -c"而不是" / bin / sh"所以当我在Dockerfile中使用RUN时,它会访问bash而不是sh。注意我说的是同一图像的默认命令,而不是我想要构建的图像。
答案 0 :(得分:3)
我认为ubuntu
图片中没有默认命令。当你运行
$ docker run ubuntu echo hi
hi
它运行["/bin/echo", "hi"]
。您可以通过运行
$ docker run ubuntu set
2014/06/20 08:38:54 exec: "set": executable file not found in $PATH
set
是shell中的内置命令,但是docker尝试将其作为外部命令运行。
如果要将默认shell从短划线更改为bash,可以使用固定符号链接创建图像。这是一个dockerfile:
FROM ubuntu
RUN ln -sf /bin/bash /bin/sh
[编辑]
我刚刚意识到你在谈论什么。我不知道你是否可以更改RUN
命令的默认值,但你可以像这样明确地使用/ bin / bash:
RUN /bin/bash -c ...
答案 1 :(得分:0)
您可以使用:
RUN ["/bin/bash", "-c", "<command>"]
答案 2 :(得分:-1)
也许这会有所帮助:
SHELL ["/bin/bash", "-c"]
参考: https://github.com/moby/moby/issues/7281#issuecomment-389440503