優先順位関係のオーバーライド: Dockerfile および docker run の ENTRYPOINT および CMD 命令

Dockerfile の ENTRYPOINT ディレクティブと CMD ディレクティブは、コンテナーのデフォルトの起動コマンドを定義します。ただし、これらのディレクティブは、コンテナーの実行時に Docker run コマンド ライン引数によってオーバーライドされる可能性があります。

オーバーライドの優先順位関係は次のとおりです。

  1. コンテナーの実行時に--entrypointこのオプション、Dockerfile で指定された ENTRYPOINT コマンドがオーバーライドされます。
  2. コンテナーの実行時にコマンドライン引数を指定すると、Dockerfile で指定された CMD コマンドがオーバーライドされます。
  3. Dockerfile で ENTRYPOINT コマンドが指定されているが、CMD コマンドでは指定されていない場合、コンテナーの実行時にコマンド ライン引数が CMD コマンドになります。
  4. Dockerfile で ENTRYPOINT コマンドも CMD コマンドも指定されていない場合、コンテナーの実行時に、コマンド ライン パラメーターは完全なコマンドとみなされ、直接実行されます。

たとえば、次の Dockerfile があるとします。

FROM ubuntu

ENTRYPOINT ["/bin/echo", "Hello,"]

CMD ["world!"]

Dockerfile は、 ENTRYPOINT コマンドと CMD コマンド"/bin/echo"使用して、Ubuntu に基づいたコンテナーを定義します。"Hello,""world!"

パラメーターを指定せずにコンテナーを実行すると、デフォルトの ENTRYPOINT および CMD コマンドが実行され、次の出力が表示されます。

$ docker run myimage

Hello, world!

コンテナーの実行時にコマンド ライン引数が指定されている場合、CMD コマンドはオーバーライドされます。次に例を示します。

$ docker run myimage "GPT-3"

出力は次のようになります。

Hello, GPT-3!

コンテナーの実行時に--entrypointオプションを、ENTRYPOINT コマンドがオーバーライドされます。次に例を示します。

$ docker run --entrypoint /bin/ls myimage /

出力はコンテナのルートにあるファイルのリストになります。

ENTRYPOINT と CMD コマンドの両方が Dockerfile で指定されている場合、CMD コマンドはコンテナーの実行時にコマンド ライン パラメーターによってオーバーライドできますが、 ENTRYPOINT コマンドは、--entrypointオプション

おすすめ

転載: blog.csdn.net/kingu_crimson/article/details/129929858