我是Docker的新手,当我使用-it选项运行docker镜像时,docker容器完成运行,如我的docker文件中所示回显“test”并退出零。预期的行为应该是docker保持打开容器的虚拟终端:docker run -it test
这是我的Docker文件:
FROM centos
CMD echo test
我尝试了CMD和ENTRYPOINT,以及shell形式和exec形式,行为是一样的。但是,如果我在docker文件中通过RUN替换CMD,则-it选项可以正常工作。
Docker要求主进程继续在前台运行。否则,它认为应用程序已停止并关闭容器。
在你的情况下,-i
意味着即使没有附加也保持STDIN开放&-t
意味着分配伪tty。它们在容器运行时才有意义。
但容器运行不依赖于上面的标志,它们取决于主要过程。在这里,它是echo test
,它执行然后完成,所以容器找到主要过程完成,它退出。
如果用CMD
替换RUN
,那么它将使用默认的CMD
,即/bin/bash
,请参见centos here的dockerfile,而/bin/bash
将不会自动退出,因此容器不会退出。