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 スケジュールタスク (イベント イベント) の詳細な説明

推薦する

Dockerを使用してMQTTサーバーを構築するプロセスの詳細な説明

1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...

Vueで親子コンポーネント通信を実装する方法

目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...

Web ページのソース ファイルを表示できない場合はどうすればよいですか?

Q: Outlook または IE のどちらを使用している場合でも、マウスを右クリックすると、ポッ...

Linux mpstat コマンドの使用方法の詳細な説明

1. mpstatコマンド1.1 コマンド形式 mpstat [ -A ] [ -u ] [ -V ...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

JSでHTML本文のスタイルを変更する

目次1. 本来の定義2. JS操作、幅の変更を例に3. 効果: 幅が変更されました 1. 本来の定義...

Linuxでホスト名を永続的に変更する方法

ホスト名を変更する場合は、以下の手順に従ってください。ホスト名の使用hostnameコマンドを使用す...

CSS を使用して正方形の div を実装する 2 つの方法

目標: 辺の長さが等しい正方形を作成する方法 1: 単位 vw を使用する (ps これが最も簡単な...

GDBデバッグMySQL実戦ソースコードコンパイルとインストール

ソースコードをダウンロード git クローン https://github.com/mysql/my...

JavaScript における 3 つの for ループ ステートメントの使用の概要 (for、for...in、for...of)

序文JS に触れるすべての開発者は、必然的に for ループを扱うことになります。結局のところ、fo...

vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

要件: データをリスト形式で表示する場合、表示すべき情報項目が多く、表が横に長くなってしまいます。表...

MySQLインデックスの詳細

1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...

Vue を使用して CSS トランジションとアニメーションを実装する方法

目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...

MySQL のデフォルトのストレージ エンジンを変更する方法

mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...