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

推薦する

React+tsは二次リンク効果を実現します

この記事では、二次リンク効果を実現するためのReact+tsの具体的なコードを参考までに共有します。...

JavaScript ベースのランダム点呼システムの実装

この記事では、ランダムロールコーラーを実装するためのJavaScriptの具体的なコードを参考までに...

MySQL 完全崩壊: クエリフィルタ条件の詳細な説明

概要実際のビジネス シナリオ アプリケーションでは、ビジネス条件に基づいて対象データを取得およびフィ...

MySQL ステートメントの配置と概要の紹介

SQL (Structured Query Language) ステートメント、つまり構造化クエリ言...

少なくとも7日間連続して注文を行ったユーザーに対するSQLクエリ

テーブルを作成するテーブル order(id varchar(10),date datetime,o...

データ型の判断における js typeof と instanceof の違いと、その開発と使用について

目次1. typeof演算子2. インスタンスオブ演算子3. typeof と instanceof...

テキストエリア テキストエリアの幅と高さ 幅と高さの自動適応実装コード

コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...

Windows 10 インストール vmware14 チュートリアル図

ソフトウェアのダウンロードソフトウェアのダウンロード リンク: https://pan.baidu....

JavaScriptは行削除機能を備えたテーブルを動的に生成します

この記事の例では、テーブルを動的に生成したり行を削除したりするためのJavaScriptの具体的なコ...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

MacでのMySQL初期化パスワード操作

Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...

JSはBaidu Newsナビゲーションバーの効果を実現

この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...

VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

1. Workstationで仮想マシンのハードウェアバージョンを変更するWorkstation ...

Webフロントエンドスキル概要(個人の実務経験)

1. 今日、ページを作っているときに、矢印を中央に配置する効果に遭遇しました。クリック領域を大きくし...