docker でのエントリーポイントと cmd の違いは何ですか?

coldplay.xixi
リリース: 2020-07-27 11:20:40
オリジナル
10478 人が閲覧しました

Docker でのエントリーポイントと cmd の違いは次のとおりです: 1. CMD コマンドは実行可能ファイルを実行し、パラメーターを提供します。パラメーターは ENTRYPOINT に指定できます。2. ENTRYPOINT コマンド自体にもパラメーターを含めることができ、変更されたパラメータはカバーされません。

docker でのエントリーポイントと cmd の違いは何ですか?

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

  • ##root@4c8549e7ce3e:/# ps

  • #PID TTY TIME CMD
  • 1 ? 00:00:00 シュ
  • ##9 ? 00:00:00 バッシュ
  • #19 ? 00:00 :00 ps

  • PID 1 のプロセスが sh を実行しており、bash は sh,

    /bin/bash## の単なる子プロセスであることがわかります。
  • /bin/sh -c
の後のパラメータとして使用されます。

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート