docker run 立即退出?

时间:2021-02-09 07:06:50

标签: docker

我有以下 Dockerfile,所以我可以登录容器来检查镜像 Some_Linux_Img。

FROM Some_Linux_Img
ENTRYPOINT ["/bin/bash"]

我建造了它

docker build -t test:v2 .
Sending build context to Docker daemon 2.048 kB
Step 1/2 : FROM abc.com/shared/miniconda
 ---> ec1a66fb9030
Step 2/2 : ENTRYPOINT /bin/bash
 ---> Running in ea14b4ce6c6e
 ---> 21ebe99c7ef1
Removing intermediate container ea14b4ce6c6e
Successfully built 21ebe99c7ef1

然而,它在 docker run 之后立即退出?

$ docker run --name test test:v2 $ docker ps -a

状态显示“退出 (0) x 秒前”。我想在容器内运行一些 bash 命令来检查 Linux 映像 Some_Linux_Img。 (docker exec -it test /bin/bash)

2 个答案:

答案 0 :(得分:1)

容器在其主进程退出时退出,并且由于您已将 ENTRYPOINT 指定为 ["/bin/bash"],因此它只是执行命令并退出。

如果您只想让容器继续运行以进行几分钟的测试,您可以将入口点命令重写为:

docker run --name test test:v2 sleep 300

答案 1 :(得分:1)

首先,如您所见,容器的退出代码是0。这意味着,容器中的主进程(在您的情况下为 /bin/bash)无错误退出。

您在这里遇到的问题(与其他答案所说的相反)可能与提供的入口点或 cmd 无关。我想你只是想启动一个容器并进入它的 bash shell,对吗? 虽然这显然违背了容器化的目的,但我认为它对于调试/教育目的非常有用。所以这里是如何做到这一点(使用而不是你的 docker run 命令):

docker run -it --name test test:v2

如您所知,我在您的命令中添加了速记标志 it,这样做的作用是为您的容器分配一个 tty (-t) 并在“交互”模式,这意味着您将能够在容器外壳 (-i) 启动后立即与其交互。

这当然只是非常基础的解释,请参考我在docker文档中标注的部分:https://docs.docker.com/engine/reference/run/#foreground

相关问题