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