我想知道是否有人知道是否可以知道 docker CMD 何时完成执行?
我最初尝试在 CMD 之后放置 ENTRYPOINT 命令,但当您运行 docker 容器时它会立即运行。
另外,如果这只能通过 docker-compose 来完成,如果有办法知道命令何时完成也很好?
一旦
CMD
运行完毕,容器就会停止并退出。
您可以使用:
$ docker wait [container name/id]
等待容器停止。如果容器已经停止,该命令将立即返回。否则,它将等待容器完成其工作,或者以其他方式停止。
来自 https://docs.docker.com/engine/reference/commandline/wait/
阻塞直到一个或多个容器停止,然后打印它们的退出代码
Docker
CMD
在容器停止/终止之前不会完成。 CMD
指令是启动将在容器内运行的主进程的一种方式。这个过程将持续运行直到
容器被停止或终止。
在 Dockerfile 中,将
CMD
或 ENTRYPOINT
指令放在哪里并不重要。当您在同一个 dockerfile 中同时包含 ENTYPOINT
和 CMD
指令时,CMD
将作为参数附加到 ENTRYPOINT
命令。
前两个答案确实是正确的,但没有直接回答你的问题。一旦
CMD
完成,容器将退出,但仍会存在于您的主机上,直到被删除。
假设您使用
docker run
启动 docker-compose up
或 -d
,以便它们在后台运行(分离):
docker container ps
仅显示正在运行的容器,因此一旦退出,docker container ps -a
就会显示它。docker-compose ps
显示所有 compose 服务的状态,包括已停止的容器。