1

CMD最後の行として 次の Dockerfile があります

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)")

ただし、これでもCMDDockerfile の行が実行されます。

スクリプトの行を次のように変更することで、この動作を変更できることがわかりました。

# 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)")

しかし、私はこれが必要だとは思いませんでした。コマンドCMDでオーバーライドされたときに docker が実行するのは正常ですか? これは、フラグを使用せずに簡単にオーバーライドできるとdocker runの使用の違いの 1 つになるはずだと思いました。CMDENTRYPOINTCMD--entrypoint

重要な場合、これはdockerバージョンを使用しています17.03.0-ce

4

1 に答える 1