ホームページ 運用・保守 Docker docker でのエントリーポイントと cmd の違いは何ですか?

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

Jul 27, 2020 am 11:20 AM
cmd docker

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

pycharmでプログラムをエクスポートする方法 pycharmでプログラムをエクスポートする方法 Apr 18, 2024 am 12:09 AM

pycharmでプログラムをエクスポートする方法

pycharmでプロジェクトをパッケージ化する方法 pycharmでプロジェクトをパッケージ化する方法 Apr 25, 2024 am 03:54 AM

pycharmでプロジェクトをパッケージ化する方法

コマンド プロンプトで CMD を使用して Bitlocker 暗号化をオフにする方法 コマンド プロンプトで CMD を使用して Bitlocker 暗号化をオフにする方法 Jun 19, 2024 am 11:33 AM

コマンド プロンプトで CMD を使用して Bitlocker 暗号化をオフにする方法

pycharmはどの言語をサポートしていますか? pycharmはどの言語をサポートしていますか? Apr 18, 2024 am 10:57 AM

pycharmはどの言語をサポートしていますか?

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

PHPマイクロサービスコンテナ化のアジャイル開発と運用

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールする方法

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は?

golangプログラムの起動方法 golangプログラムの起動方法 Apr 21, 2024 am 12:47 AM

golangプログラムの起動方法

See all articles