【发布时间】:2018-03-19 21:15:59
【问题描述】:
我有一个 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)")
但是,这仍然会执行我的 Dockerfile 中的 CMD 行。
我发现我可以通过如下更改脚本中的行来改变这种行为。
# 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 run 命令中被覆盖时,docker 执行CMD 是否正常?我认为这应该是使用CMD 和ENTRYPOINT 之间的区别之一,您可以轻松覆盖CMD 而无需使用--entrypoint 标志。
如果它很重要,这是使用 docker 版本 17.03.0-ce
【问题讨论】: