-2

我是 Docker 新手,当我使用 -it 选项运行 docker 映像时,docker 容器完成运行,回显“test”,如我的 docker 文件中所示,并以零退出。预期的行为应该是 docker 保持打开容器的虚拟终端: docker run -it test 这是我的 Docker 文件:

FROM centos
CMD echo test

我尝试了 CMD 和 ENTRYPOINT,以及 shell 形式和 exec 形式,行为是相同的。但是,如果我将docker文件中的CMD替换为RUN,-it选项就可以正常工作了。

4

1 回答 1

1

Docker 要求主进程保持在前台运行。否则,它认为应用程序已停止并关闭容器。

在您的情况下,-i意味着即使没有附加 STDIN 也保持打开状态,并且-t意味着分配一个伪 tty。它们仅在容器运行时才有意义。

但容器运行不依赖于上述标志,它们依赖于主进程。在这里,它是echo test,它执行然后完成,所以容器发现主进程完成,它退出了。

如果你替换CMDRUN,那么它会使用 default CMD,也就是这里/bin/bash看 centos 的 dockerfile ,并且不会自动退出,所以容器不会退出。/bin/bash

于 2018-09-04T06:07:11.887 回答