docker-compose ポートと expose の違いの詳細な説明

docker-compose ポートと expose の違いの詳細な説明

docker-compose でコンテナ ポートを公開する方法は、ports と expose の 2 つがあります。

ポート

Ports は、コンテナ ポートをホストの任意のポートまたは指定されたポートに公開します。使用方法:

ポート:
 
- "80:80" # コンテナのポート 80 をホストのポート 80 にバインドします - "9000:8080" # コンテナのポート 8080 をホストのポート 9000 にバインドします - "443" # コンテナのポート 443 をホストの任意のポートにバインドします。バインドされたホストのポート番号は、コンテナの起動時にランダムに割り当てられます

ポートを使用すると、ホスト ポートが指定されているかどうかに関係なく、ポートがホストに公開されます。

一部のネットワーク アプリケーションはコンテナー内で実行できます。これらのアプリケーションを外部からアクセスできるようにするには、-P (大文字) または -p (小文字) パラメータを使用してポート マッピングを指定します。

(1)-Pフラグを使用すると、Dockerは49000〜49900の間のポートをコンテナ内で開かれたネットワークポートにランダムにマッピングします。

docker ps を使用すると、ローカル ホストのポート 49155 がコンテナーのポート 5000 にマッピングされていることがわかります。このとき、コンテナ内の Web アプリケーションが提供するインターフェースにアクセスするには、ローカル マシンのポート 49155 にアクセスします。

$ sudo docker run -d -P トレーニング/ウェブアプリ python app.py
 
$ sudo docker ps -l
 
コンテナID イメージ コマンド 作成ステータス ポート名
 
bc533791f3f5 training/webapp:latest python app.py 5秒前 2秒前 0.0.0.0:49155->5000/tcp nostalgic_morse

同様に、docker logs コマンドを使用してアプリケーション情報を表示することもできます。

$ sudo docker ログ -f nostalgic_morse
 
* http://0.0.0.0:5000/ で実行中
 
10.0.2.2 - - [2014/05/23 20:16:31] "GET / HTTP/1.1" 200 -
 
10.0.2.2 - - [2014/05/23 20:16:31] "GET /favicon.ico HTTP/1.1" 404 - 

(2)-p(小文字)はマッピングするIPとポートを指定できますが、指定されたポートにバインドできるコンテナは1つだけです。サポートされている形式は、hostPort:containerPort、ip:hostPort:containerPort、ip::containerPort です。

さらす

現在のコンテナにリンクされているコンテナにコンテナを公開します。使用方法:

さらす:
- 「3000」
- 「8000」

上記の手順により、現在のコンテナのポート 3000 と 8000 が、このコンテナにリンクされているコンテナに公開されます。

ポートとの違いは、expose ではポートがホストに公開されないことです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Jenkins の docker-compose デプロイメントと構成に関する詳細なチュートリアル
  • Docker は固定コンテナ IP アドレスを実現するためにカスタム ネットワークを作成します。
  • Docker-compose を使用して ELK クラスターを構築する方法
  • docker-composeの詳細なインストールと使用方法
  • Docker Compose ネットワーク設定の説明
  • docker-compose を使用して MySQL を実行する方法
  • docker-composeをインストールする最も簡単な方法2つ
  • PIP で docker-compose をインストールする際のタイムアウト問題の解決方法

<<:  Webpack ファイル パッケージ化エラー例外

>>:  mysql スケジュールタスク (イベント イベント) の詳細な説明

推薦する

Vue要素ツリーコントロールに点線を追加する詳細な説明

目次1. 成果を達成する2. 実装コード3. その他の実装要約する1. 成果を達成する 2. 実装コ...

Nodejs 組み込み暗号化モジュールを使用してピアツーピアの暗号化と復号化を実現する詳細な説明

暗号化と復号化は、通信のセキュリティを確保するための重要な手段です。すでに多くの暗号化アルゴリズムが...

JSタイマーを使用して要素を移動する

JS タイマーを使用して、要素に移動する効果のあるメソッドを作成します。実装のアイデアは、まず要素の...

MySQLデータ遅延ジャンプの問題の解決策

今日は、データベース遅延ジャンプに関する別の典型的な問題を分析しました。このプロセスでは、参考のため...

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

CSS3は光る境界線効果を実現します

操作効果: html <!-- この要素は表示されません。DOM は JavaScript に...

MySQL プロジェクトでトランザクション分離レベルを選択する方法

導入コンテンツから始めましょう。誰もが次のような面接のシナリオに遭遇したことがあると思います。インタ...

MySQLワームレプリケーションの基本知識

ワームは、その名前が示すように、自ら複製し、その数は倍増、つまり指数関数的に増加します。 MySQL...

Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明

準備Windows Server 2008 R2 Enterprise (2.40GH、8GB、64...

ドラッグ効果を実現するための js オブジェクト指向メソッド

この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに...

javascript 入力画像のアップロードとプレビュー、FileReader プレビュー画像

FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...

nginx + セカンダリドメイン名 + https サポートを使用する

ステップ1: Alibaba Cloudプライマリドメイン名にセカンダリドメイン名を追加する2 番目...

MySQL でのストアド プロシージャと関数の作成の詳細な説明

目次1. ストアドプロシージャ1.1. 基本構文1.2 実行権限を指定してストアドプロシージャを作成...

MySQLを水平から垂直に、垂直から水平に変換する方法

データの初期化 `test_01` が存在する場合はテーブルを削除します。 テーブル「test_01...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...