如何知道 docker CMD 何时完成?

问题描述 投票:0回答:3

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

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

另外,如果这只能通过 docker-compose 来完成,如果有办法知道命令何时完成也很好?

docker dockerfile docker-cmd
3个回答
5
投票

一旦

CMD
运行完毕,容器就会停止并退出。

您可以使用:

$ docker wait [container name/id]

等待容器停止。如果容器已经停止,该命令将立即返回。否则,它将等待容器完成其工作,或者以其他方式停止。


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

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


2
投票

Docker

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

在 Dockerfile 中,将

CMD
ENTRYPOINT
指令放在哪里并不重要。当您在同一个 dockerfile 中同时包含
ENTYPOINT
CMD
指令时,
CMD
将作为参数附加到
ENTRYPOINT
命令。


1
投票

前两个答案确实是正确的,但没有直接回答你的问题。一旦

CMD
完成,容器将退出,但仍会存在于您的主机上,直到被删除。

假设您使用

docker run
启动
docker-compose up
-d
,以便它们在后台运行(分离):

  • docker container ps
    仅显示正在运行的容器,因此一旦退出,
    docker container ps -a
    就会显示它。
  • docker-compose ps
    显示所有 compose 服务的状态,包括已停止的容器。
© www.soinside.com 2019 - 2024. All rights reserved.