我正在创建一个Dockerfile构建脚本,并想使用bash命令。 RUN默认情况下使用/ bin / sh。 有什么方法可以告诉RUN使用/ bin / bash代替吗?
不,这硬编码为“ / bin / sh -c”
当然可以在上一个构建步骤中将/ bin / bash链接到/ bin / sh。
我最终更改了Dockerfile脚本以复制文件并使用该文件,而不是使用我在bash中一直使用的重定向。
@dwatrous您是否尝试过RUN ["echo", "hello"]
不会被/bin/sh
IIRC包装。 因此,如果您绝对想要bash,则可以调用它: RUN ["/bin/bash", "-c", "echo hello all in one string"]
。
让我们知道它是否可以解决您的问题。
bash可以在RUN
说明中手动使用。
没有意图或计划将其更改为bash。
我将其标记为文档问题,因为我们可能希望对此进行记录。 这是第三次或第四次出现此问题。
公关: https :
由于以下原因,现在可以关闭它: https :
那么这是什么故事呢?
@ORESoftware参见上面的讨论,以及https://github.com/moby/moby/pull/22489 ,其中添加了SHELL
Dockerfile指令(Docker 1.12及更高版本)
如果您要为单个RUN
使用不同的外壳程序,请使用Exec格式(JSON)表示法-如上文所述:
RUN ["/bin/bash", "-c", "echo I am now using bash!"]
如果要更改映像中的默认外壳程序(以及在构建过程中),请使用在https://github.com/moby/moby/pull/22489中实现的SHELL
Dockerfile指令:
SHELL ["/bin/bash", "-c"]
RUN echo I am now using bash!
或以上的组合
FROM ubuntu
RUN echo I am using the default (/bin/sh)
RUN ["/bin/bash", "-c", "echo I am using bash"]
SHELL ["/bin/bash", "-c"]
RUN echo I am using bash, which is now the default
RUN ["/bin/sh", "-c", "echo I am using /bin/sh"]
RUN ["echo", "I don't use a shell at all"]
我知道我参加聚会很晚,是的,这不是最好的解决方案,但是它可以满足我的需求
下载并解压缩SDK之后,在我的docker文件中,运行以下两个命令
运行cp / bin / bash / bin / sh
RUN echo“源〜/ google-cloud-sdk / path.bash.inc” >>〜/ .bashrc
RUN源〜/ .bashrc
之后,可以在构建期间和运行时使用gcloud命令
@qhaas认为这与OCI规范无关,仅与buildah实现有关
最有用的评论
@ORESoftware参见上面的讨论,以及https://github.com/moby/moby/pull/22489 ,其中添加了
SHELL
Dockerfile指令(Docker 1.12及更高版本)如果您要为单个
RUN
使用不同的外壳程序,请使用Exec格式(JSON)表示法-如上文所述:如果要更改映像中的默认外壳程序(以及在构建过程中),请使用在https://github.com/moby/moby/pull/22489中实现的
SHELL
Dockerfile指令:或以上的组合