gpt4 book ai didi

bash - bash无法使用Docker的SHELL指令工作

转载 作者:行者123 更新时间:2023-12-02 19:04:01 25 4
gpt4 key购买 nike

我需要在CI / CD管道的脚本中使用bash,因此我尝试使用以下简单图像:

FROM alpine:3.4
RUN apk update -q && apk add --no-cache bash -q
SHELL ["/bin/bash", "--login", "-c"]
RUN echo $0

我在终端中得到的是:
$ docker build .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM alpine:3.4
---> b7c5ffe56db7
Step 2/4 : RUN apk update -q && apk add --no-cache bash -q
---> Using cache
---> 18b729da453c
Step 3/4 : SHELL ["/bin/bash", "--login", "-c"]
---> Using cache
---> 03ca0df4a543
Step 4/4 : RUN echo $0
---> Running in a65419dafc4b
/bin/bash
Removing intermediate container a65419dafc4b
---> 2963f9e0e563
Successfully built 2963f9e0e563

之后,我运行该容器并得到以下信息:
$ docker run -it 2963f9e0e563
/ $ echo $0
/bin/sh
/ $

(它以root用户身份运行,但我为此帖子将“#”更改为“$”)

为什么使用 sh而不是 bash

最佳答案

SHELL命令仅修改用于执行Dockerfile内部指令的 shell 。

如果要更改用于容器运行时的 shell ,可以将CMD ["/bin/bash"]添加到Dockerfile中,以便将容器默认可执行文件更改为/bin/bash。您还可以使用docker run -it <image> /bin/bash从命令行指定可执行文件。

关于bash - bash无法使用Docker的SHELL指令工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com