CMDとENTRYPOINTでDockerfile違い
HTTPS:// it.baiked.com/system/docker/1975.html シンプルな違い
Dockerfile 2つのブート構成、CMDとENTRYPOINTがあります船がでDockerfileを始めたとき、コンフィギュレーションコマンドが自動的に実行することができますが、次のように両方が、その後、どのような違いをまとめません。
CMDでまず見て、コンフィギュレーションの3つの形式があり、以下のとおりです。
- CMD [ "実行"、 "PARAM1"、 "PARAM2"](EXECフォーマット、推奨される形式)
- CMD [ "PARAM1"、 "PARAM2"](エントリポイントデフォルトパラメータとして)
- CMDコマンドPARAM1のPARAM2(シェル・フォーマット)
使用時には、問題に注意を払う必要があります。
- デフォルトのコンテナとして指定されたコマンドを実行し、実行可能ファイルが含まれている場合、これが主な目的です。
- それは、実行可能ファイルが含まれていない場合は、デフォルトパラメータとしてENTRYPOINT構成、CMDを提供する必要があります。
- 一つだけCMD Dockerfileの発症には、複数の、最後の発症を表示された場合。
そしてENTRYPOINTは、すなわち、構成された2つの形式があります。
- ENTRYPOINT [ "実行"、 "PARAM1"、 "PARAM2"](EXECフォーマットが推奨されます)
- エントリポイントコマンドPARAM1のPARAM2(シェル・フォーマット)
CMDとENTRYPOINTフォーマットは、二つの構成との間の差です。
- execのフォーマットこのフォーマットは、このモードを使用する際に実行可能なプログラムドッカーアプリケーションはPID 1つの処理容器となり、Unixは、このようなの実装などの信号、受信できるように、あなたは、プロセスをシェルする必要はありませんが推奨される ドッキングウィンドウを 停止がSIGTERMを受け取ることができるとき。
- シェル形式は常に、シェルプロセスを呼び出す/ binに/ SH -cサブコマンドは、UNIXの実行可能プログラムは、信号に応答することはできませんになります。
注意:シェルENTRYPOINTフォーマットを使用する場合は、CMDを無視して、着信パラメータを実行し、デフォルトENTRYPOINTコマンドを交換したい場合は、ドッキングウィンドウの実行の実装で--entrypointパラメータを指定する必要があります。
使用する場合は、次のようにCMDとENTRYPOINTをまとめると:
- Dockerfile、CMDで少なくとも1エントリーポイントを指定する必要があります。
- ドッカーが実行可能なプログラムとして、あなたが使用する必要があるときENTRYPOINTを設定します。
- ENTRYPOINT CMDは、ドッカーデフォルトパラメータとして、またはデフォルトのコマンドとして使用することができます。
- CMDは、渡されたドッキングウィンドウの実行パラメータをカバーすることができます。
- ドッカーを実行した後、着信パラメータは、execフォーマットを使用することを条件とする、ENTRYPOINTに付加されます。
最後に、私たちは例を見て:
ENTRYPOINTは、execフォーマット、常に使用ENTRYPOINT引数を使用すると、コンテナの起動時CMD追加のパラメータを動的に置き換えることができます。
たとえばDockerfile、次のコード:
ENTRYPOINT [ "/ binに/エコー"、 "こんにちは"] CMD [ "世界"]
容器ドッカーラン-it [画像]によって活性化されると、出力:
$ドッキングウィンドウの実行-it [画像] こんにちは
-it [画像]クラウドマンがドッキングウィンドウの実行によって開始された場合、出力は次のようになります。
$ドッキングウィンドウの実行-it [画像]クラウドマン
こんにちはクラウドマン