1 CMD命令导致pod启动失败
(1) 场景原镜像使用的是 FROM debian:bullseye
启动应用命令:
CMD ["java", "-Djava.io.tempdir=/home/1000/","-jar","/usr/src/myapp/app.jar"]
此时pod可以正常启动
(2)将上述镜像更新为公司指定的镜像,如:
FROM xxxxx/xxxx/openjdk:17-standard ,并依旧使用CMD启动pod,pod启动失败。而且容器日志中并没有任何有用的错误信息。
Back-off restarting failed container backend-app in pod backend-batch-app-6d9787f9c6-bjd6b_nsp-xx-s-app(cf5a6c17-7953-4ff5-b799-96c3de750a14)
(3) 原因分析:
CMD的定义和用途
CMD用于指定容器启动时运行的命令。可以有多个CMD指令,但只有最后一个CMD指令会生效。CMD可以包含参数,如果在运行docker run命令时指定了参数,将会覆盖CMD中指定的参数。CMD适用于设置默认命令和参数,提供容器的默认行为。
ENTRYPOINT的定义和用途
ENTRYPOINT用于指定容器启动时运行的可执行文件或脚本。和CMD一样,只有最后一个ENTRYPOINT指令会生效。ENTRYPOINT指令不会被覆盖,而是被附加到docker run命令的参数之前。ENTRYPOINT适用于定义容器启动的主要入口点,确保每次容器启动时都执行同一命令。
CMD和ENTRYPOINT的主要区别
- 灵活性: CMD可以被doc