【发布时间】:2020-03-03 21:10:14
【问题描述】:
我正在尝试连接到正在运行的容器或使用 bash shell(而不是 sh shell)以交互模式启动新容器。我要跑:
docker exec -it <container_name> /bin/bash
或
docker run -it <container_name> <image_name>
或
docker run -it <container_name> <image_name> /bin/bash
并获得一个交互式 bash shell。
到目前为止我尝试过的:
每个this post我都试过了
将此添加到我的 Dockerfile 中
SHELL ["/bin/bash", "-c"]
将此添加到我的 Dockerfile 中
RUN ["/bin/bash", "-c", "echo I am now using bash!"]
但每次我尝试以交互模式运行容器(docker run -it 或附加到正在运行的容器 (docker exec -it) 时,我都会进入 sh shell。
如何获得在 docker 容器内运行的交互式 bash shell?
更新:最小的工作 Dockerfile
FROM ubuntu
SHELL ["/bin/bash", "-c"]
【问题讨论】:
-
有一个完整的 Dockerfile(或者,更确切地说,一个足够完整以构成一个 minimal reproducible example,但不大于实现该目标的最短可能文件)?并非每个容器都有 bash 的副本。除非我们知道您在派生什么
FROM,或者如果您正在采取明确的步骤在适当的地方安装 bash,我们不能说您是否这样做。 -
顺便说一句,你从
RUN ["/bin/bash", "-c", "echo \"$BASH_VERSION\""]得到什么输出做?你说你试过相关的RUN,但你没有告诉我们发生了什么。 -
你是如何确定你最终进入的shell是
sh? -
我认为它是外观上的 sh shell(白色纯文本与您通常在 ubuntu 的 bash 终端中看到的绿色粗体文本)以及我无法重复上一个命令的事实通过按向上箭头键等。此外,我使用最小的工作 Dockerfile 进行了更新。
-
echo $BASH_VERSION在你认为是sh的shell 中输出什么?
标签: bash shell docker dockerfile