Docker -it选项不适用于Dockerfile中的ENTRYPOINT或CMD

问题描述 投票:-2回答:1

我是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 dockerfile docker-image docker-entrypoint
1个回答
1
投票

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

在你的情况下,-i意味着即使没有附加也保持STDIN开放&-t意味着分配伪tty。它们在容器运行时才有意义。

但容器运行不依赖于上面的标志,它们取决于主要过程。在这里,它是echo test,它执行然后完成,所以容器找到主要过程完成,它退出。

如果用CMD替换RUN,那么它将使用默认的CMD,即/bin/bash,请参见centos here的dockerfile,而/bin/bash将不会自动退出,因此容器不会退出。

© www.soinside.com 2019 - 2024. All rights reserved.