如何知道docker CMD何时完成?

时间:2018-01-30 23:23:44

标签: docker dockerfile

我想知道是否有人知道是否有可能知道Docker CMD何时完成执行?

我最初尝试在CMD之后放置一个ENTRYPOINT命令,但是当你运行docker容器时它会立即运行。

另外,如果这只能用docker-compose完成,那么如果有办法知道命令何时完成呢?

3 个答案:

答案 0 :(得分:2)

CMD完成运行后,容器会停止并退出。

您可以使用:

$ docker wait [container name/id]

等待容器停止。如果容器已停止,则此命令将立即返回。否则,它将等待容器完成其工作,否则将停止。

来自https://docs.docker.com/engine/reference/commandline/wait/

  

阻止,直到一个或多个容器停止,然后打印退出代码

答案 1 :(得分:1)

在容器停止/终止之前,Docker CMD将不会完成。 CMD指令是启动将在容器内运行的主进程的一种方式。这个过程将继续运行直到 容器被拦截或杀死。

在Dockerfile中,放置CMDENTRYPOINT指令的位置并不重要。如果在同一个dockerfile中包含ENTYPOINTCMD指令,则CMD将作为参数附加到ENTRYPOINT命令。

答案 2 :(得分:0)

前两个答案确实是正确的,但不直接回答你的问题。 CMD完成后,容器将退出,但在主机上移除之前仍会存在。

假设您使用docker run启动了docker-compose up-d,以便它们在后台运行(已分离):

  • docker container ps仅显示正在运行的容器,因此一旦退出,docker container ps -a就会显示它。
  • docker-compose ps显示所有撰写服务的状态,包括已停止的容器。