前回の記事【dockerコンテナのためのdockerfileを詳しく解説】では、dockerfileについてより詳しく解説しました。また、コンテナの起動コマンドは`ENTRYPOINT`と`CMD`の両方で指定できることも紹介しました。これら 2 つのコマンドは Dockerfile の記述を習得するための中核となるため、ここでは個別に説明します。 1. 前に書く前回の記事では、dockerfile について包括的に理解しました。また、 2. CMDとENTRYPOINTの主な違い早速本題に入りましょう。CMD と ENTRYPOINT はどちらも、コンテナの実行を開始するコマンドを指定するために使用されます。違いは次のとおりです。
ビルドされたコンテナを正常に起動するには、作成する Dockerfile ファイルに CMD または ENTRYPOINT 命令が含まれている必要があります。 3. CMDとENTRYPOINTの組み合わせ1.CMD
Dockerfile に複数の CMD が含まれている場合、最後の CMD のみが読み込まれて使用されます。 dockerhub で Centos の公式イメージを検索し、公式の dockerfile ファイルを確認します。 基本的に、各公式イメージは、次のように、独自のバージョンの Dockerfile リンクを提供します。 ゼロから centos-8-x86_64.tar.xz を追加します / ラベル org.label-schema.schema-version="1.0" org.label-schema.name="CentOS ベースイメージ" org.label-schema.vendor="CentOS" org.label-schema.license="GPLv2" org.label-schema.build-date="20201204" コマンド ["/bin/bash"] Centos だけでなく、他の Debian、Ubuntu、busybox などのイメージでも、CMD を通じて起動コマンドを指定するだけで済みます。たとえば、busybox はより簡潔です。 ゼロから busybox.tar.xz を追加 / CMD ["sh"] このような基本イメージとツールイメージを構築するには、コンテナを起動するために必要な CMD を指定するだけです。しかし、コンテナを起動するためだけに Dockerfile を書くわけではありません。ほとんどの場合、コンテナ内でアプリとサービスを実行したいのです。 もちろん、CMD 経由で起動することもできますが、これには欠陥があります。前述の CMD 起動コマンドは、docker run パラメータに置き換えられます。 以下のDockerfileがあります [root@localhost dockerfiles]# cat Dockerfile Centosより コマンド ["/bin/top","-b"] ビルド後、パラメータ ps を使用してコンテナを起動します。 [root@localhost dockerfiles]# docker run -it centos_top:v1 ps PID TTY 時間 コマンド 1 ポイント/0 00:00:00 ps コンテナを起動した後、 2. ENTRYPOINTとCMDの組み合わせ
前述の通り 公式のnginx dockerfile最新バージョン1.21を例に挙げます。 まず、 ... docker-entrypoint.sh をコピー / コピー 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d 20-envsubst-on-templates.sh /docker-entrypoint.d をコピーします 30-tune-worker-processes.sh /docker-entrypoint.d をコピーします エントリポイント ["/docker-entrypoint.sh"] エクスポーズ80 ストップシグナル SIGQUIT CMD ["nginx", "-g", "デーモンオフ;"] 上記から、nginx コンテナを起動すると、最初に #docker-entrypoint.sh nginx -g "デーモンをオフ;" docker run を使用してパラメータを渡すと何が起こりますか? nginx-debugに合格しました #docker run -dt nginx nginx-debug -g "デーモンをオフ;" この時点で、コンテナを起動することは、次のスクリプトとパラメータを実行することと同等です。 #docker-entrypoint.sh nginx-debug -g "デーモンをオフ;" psで起動したコンテナを見てみましょう [root@localhost dockerfiles]# ps -ef|grep nginx root 6327 6306 0 Aug12 pts/0 00:00:00 nginx: マスタープロセス nginx -g デーモンをオフ; 101 6384 6327 0 Aug12 pts/0 00:00:00 nginx: ワーカープロセス 101 6385 6327 0 Aug12 pts/0 00:00:00 nginx: ワーカープロセス root 16800 16780 3 12:51 pts/0 00:00:00 nginx: マスタープロセス nginx-debug -g デーモンをオフ; 101 16857 16800 0 12:51 pts/0 00:00:00 nginx: ワーカープロセス 101 16858 16800 0 12:51 pts/0 00:00:00 nginx: ワーカープロセス 明らかに、パラメータ nginx と nginx-debug を持つ 2 つのコンテナが正常に起動されました。 つまり、 docker-entrypoint.sh とは何ですか? docker-entrypoint.sh これは通常、コマンドラインパラメータをフィルタリングしたり、exec を実行してコンテナ 1 のプロセスを開始したりするために使用される前処理スクリプトです。 コマンドのデフォルト パラメータを実装するか、ENTRYPOINT+CMD を介して docker run パラメータを受け取ることは、dockerfile を記述するための非常に一般的で便利な方法です。 dockerfile における ENTRYPOINT と CMD の組み合わせに関する記事はこれで終わりです。dockerfile における ENTRYPOINT と CMD の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS のインライン スタイルに変換するソリューション (css-inline)
>>: HTML img タグの alt 属性と title 属性の使い方の紹介
面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...
2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...
序文元のプロジェクトは、パブリックネットワークgitlabに配置されていました。セキュリティ上の理由...
序文ブラウザをどのようにズームしても、ボックス コンテナーの高さを常に 100% に保つ必要がある場...
目次1. データ型1. MySQL空間データとは何か2. GeoJSONとは3. 空間データ型のフォ...
今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...
IE 8 以降では互換モードが追加され、これを有効にすると IE の下位バージョンでレンダリングされ...
イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...
CSS スタイル html,本文{ 幅: 100%; 高さ: 100%; マージン: 0;パディング...
1. はじめに数日前、開発仲間から、フィールドを同じ値に更新すると binlog が記録されるかどう...
目次1. 使用方法2. 出力結果1.id 2.選択タイプ3.表4.パーティション5.タイプ6.可能な...
序文ほとんどの人は、システム ディスク ストレージが少ないときにこの操作を実行するか、Linux シ...
HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...
CSS3 を学習する過程で、CSS3 属性を使用すると多くのクールな効果を簡単に実現できることが分か...
目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...