我有一个 Dockerfile,CMD
最后一行 是以下内容
CMD ["/usr/local/myapp/bin/startup.sh", "docker"]
在启动期间针对 docker 映像执行的部分脚本如下
# find directory of cacerts file in DOCKER_JAVA_HOME of container
DOCKER_CACERTS_DIR=$(dirname "$(docker run "$DOCKER_IMAGE_ID" find "$DOCKER_JAVA_HOME" -name cacerts)")
但是,这仍然会执行CMD
我的 Dockerfile 中的行。
我发现我可以通过如下更改脚本中的行来改变这种行为。
# find directory of cacerts file in DOCKER_JAVA_HOME of container
DOCKER_CACERTS_DIR=$(dirname "$(docker run --entrypoint find "$DOCKER_IMAGE_ID" "$DOCKER_JAVA_HOME" -name cacerts)")
但是,我认为这没有必要。docker在命令中执行CMD
when覆盖是否正常docker run
?CMD
我认为这应该是使用and之间的区别之一,您可以在不使用标志的情况下ENTRYPOINT
轻松覆盖。CMD
--entrypoint
如果它很重要,这是使用 docker 版本17.03.0-ce