Docker でのエントリーポイントと cmd の違いは次のとおりです: 1. CMD コマンドは実行可能ファイルを実行し、パラメーターを提供します。パラメーターは ENTRYPOINT に指定できます。2. ENTRYPOINT コマンド自体にもパラメーターを含めることができ、変更されたパラメータはカバーされません。
Docker でのエントリポイントと cmd の違いは次のとおりです:
1. CMD コマンド:
CMD は、コンテナーの実行時にいくつかのコマンドとパラメーターを提供します。使用法は次のとおりです:
CMD ["executable", "param1", "param2" ] (実行形式、これが推奨形式です)
CMD ["param1","param2"] (ENTRYPOINT へのデフォルト パラメーターとして)
CMD コマンド param1 param2 (シェル形式)
最初の使用法: 実行可能ファイルを実行し、パラメーターを指定します。
2 番目の使用法: ENTRYPOINT のパラメーターを指定します。
3 番目の使用法 (シェル形式): 「/bin/sh -c」メソッドで実行されるコマンドです。
指定した場合:
CMD [“/bin/echo”, “this is a echo test ”]
ビルド後に実行 (イメージの名前が ec であると仮定):
docker run ec
が出力されます:
this is a echo test
奇妙に感じますか? スタートアップ アイテムと同様に、この方法で一時的に理解できます。
注:
docker run
コマンドでパラメータが指定されている場合、CMD のパラメータは次のようになります。上書き: (ここで説明すると、例: docker run -it ubuntu /bin/bash コマンドのパラメーターは、-it ではなく /bin/bash を参照します。-it
は単なる docker のパラメーターです。以下で説明するように、コンテナーのパラメーターではありません。パラメーターはすべて同じです。)
上記の同じ ec イメージの起動:
docker run ec /bin/bash
は出力されません:
this is a echo test
CMD コマンドは「/bin/bash」によって上書きされます。
2. ENTRYPOINT 命令
は文字通りエントリ ポイントを意味し、その機能はまさにその意味です。これにより、コンテナが実行可能プログラムのように機能できるようになります。
コンテナ関数は実行可能プログラムのように動作します。これは何を意味しますか?
話しやすくするために例を挙げます:
例 1:
次の ENTRYPOINT を使用してイメージを構築します:
ENTRYPOINT ["/bin/echo"]
次に、 docker によって構築されたイメージの後のコンテナ この関数は /bin/echo プログラムに似ています:
たとえば、構築したイメージの名前は imageecho なので、次のように使用できます:
docker run -it imageecho “this is a test”
「this is a test」がここに出力されます。 この文字列と、この imageecho 画像に対応するコンテナは、echo プログラムのように動作します。追加したパラメータ「this is a test」はENTRYPOINTの後に追加され、 /bin/echo "this is a test" のようになります。これで、エントリ ポイントの意味が理解できたはずです。
例 2:
ENTRYPOINT ["/bin/cat"]
構築されたイメージは次のように実行できます (名前が st であると仮定します):
docker run -it st /etc/fstab
これは次と同等です: /bin/ cat /etc /fstab
このコマンドの動作。実行すると、/etc/fstab
の内容が出力されます。
ENTRYPOINT には 2 つの書き方があります。
書き方 1:
ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
書き方 2:
ENTRYPOINT command param1 param2 (shell form)
docker run -entrypoint を使用してコマンドを指定します (ただし、使用できるのは最初の書き込み方法のみです)。
次は、ENTRYPOINT を ["/bin/sh -c"] に設定したときの実行状況です。
linux-oj9e:/home/lfly/project /docker # docker run -it t2 /bin/bash
#19 ? 00:00 :00 ps
PID 1 のプロセスが sh を実行しており、bash は sh,
/bin/bash## の単なる子プロセスであることがわかります。CMD は ENTRYPOINT のパラメーターを提供でき、ENTRYPOINT 自体にもパラメーターを含めることができますが、変更が必要なパラメーターを CMD に書き込み、変更する必要のないパラメーターを ENTRYPOINT に書き込むことができます。たとえば、 :
FROM ubuntu:14.10 ENTRYPOINT ["top", "-b"] CMD ["-c"]
変更が必要なパラメータを CMD に書き込みます。その後、docker run でパラメーターを指定すると、CMD のパラメーター (ここでは -c) は上書きされますが、ENTRYPOINT のパラメーターは上書きされません。
関連チュートリアルの推奨事項:
docker チュートリアル以上がdocker でのエントリーポイントと cmd の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。