你理解错了,CMD
和 ENTRYPOINT
没有必然联系。
ENTRYPOINT
顾名思义,是入口,容器启动后该命令指定的程序会成为前台进程,它要是挂了容器就会退出了。而且该命令有 EXEC 和 SHELL 两种格式。
CMD
在当 ENTRYPOINT
是 EXEC 格式,那么确实可以充当 ENTRYPOINT
的参数;而 SHELL
格式下就是一条普通的命令,正常执行。并且 CMD
可以在 docker run 时动态替换。
而 docker-compose 就相当于由 compose 帮你执行 docker run,它的 command
替换的是 CMD
。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…