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の二次連携を実現する方法

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

HTML の基本概要推奨事項 (段落)

HTML段落段落は <p> タグによって定義されます。例<p>これは段落で...

ウェブサイトに天気予報を挿入する方法

天気予報をウェブサイトに挿入すると、次のような効果が得られます。次のコードを挿入する必要があります:...

Linux と Windows でスケジュールされたタスクを設定する方法

目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...

MySQLの重複排除方法

MySQLの重複排除方法【初級】繰り返しのセリフが少ないdistinctive を使用してそれらを見...

node.js チュートリアルの Util モジュールの例の詳細な説明

目次タイプ判定から始める厳格な平等エラーファーストと約束デバッグと出力タイプ判定から始めるJavaS...

Zabbix を使用して Oracle データベースを監視する方法の詳細な説明

1. 概要Zabbix は非常に強力で、最も広く使用されているオープンソースの監視ソフトウェアです。...

Dockerにlogstashをインストールする詳細な手順

docker-compose.yml を編集し、次のコンテンツを追加します。 バージョン: '...

MySQL で group by を使用すると常にエラー 1055 が発生します (推奨)

MySQL で group by を使用すると常にエラー 1055 が発生するため、原因を確認する...

Dockerにelasticsearchとkibanaをインストールする方法

Elasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを知らないと軽蔑...

Linuxダイナミックリンクライブラリの使用

通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...

JavaScript に関する 6 つの奇妙で便利な点

目次1. 解体のヒント2. デジタルセパレーター3. try...catch...finally が...

MySQLテーブルの自動インクリメント列の初期値をリセットする方法

MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...

Docker での WSL の構成と変更の問題について

https://docs.microsoft.com/ja-jp/windows/wsl/wsl-...

mysql8.0.11 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと...