Dockerの基本的なネットワーク構成の詳細な説明

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセス

ポートをランダムにマップする

-P フラグを使用すると、Docker は 49000 から 49900 の間のポートをコンテナ内で公開されているネットワーク ポートにランダムにマッピングします。docker run -d -P training/webapp python app.py
docker ps -l # 最近作成されたコンテナを表示します docker logs -f web # アプリケーション情報を表示します

すべてのインターフェースアドレスをマップする

docker run -d -p 5000:5000 トレーニング/ウェブアプリ python app.py

指定されたアドレスの指定されたポートにマップします

docker run -d -p 127.0.0.1:5000:5000 トレーニング/ウェブアプリ python app.py

指定されたアドレスの任意のポートにマップする

docker run -d -p 127.0.0.1::5000 トレーニング/ウェブアプリ python app.py

UDPポートを指定する

docker run -d -p 127.0.0.1:5000:5000/udp トレーニング/webapp python app.py

マッピングされたポート構成を表示する

docker ポート ウェブ 5000

新しいDockerネットワークを作成する

docker ネットワーク作成 -d ブリッジ my-net

コンテナを実行して、新しく作成したmy-netネットワークに接続します。

docker run -it --rm --name busybox1 --network my-net busybox sh
docker run -it --rm --name busybox2 --network my-net busybox sh

コンテナ情報の表示

docker コンテナ ls
コンテナが接続されているかどうかを確認するためにコンテナ内でpingテストを実行します。

複数のコンテナを相互接続するにはDocker Composeが推奨されます

DNSの設定 ホストのDNS情報が更新されると、すべてのDockerコンテナのDNS設定が/etc/resolv.confを通じて直ちに更新されます。

すべてのコンテナのDNSを構成する

vim /etc/docker/daemon.json にコンテンツを追加 {
 'DNS':[
  「114.114.114.114」、
  「8.8.8.8」
 ]
}

docker run -it --rm ubuntu:17.10 cat /etc/resolv.conf

コンテナ相互接続

コンテナの接続システムは、ポート マッピングに加えて、コンテナ内のアプリケーションと対話するもう 1 つの方法です。

ソースコンテナと受信コンテナの間にトンネルを作成し、受信コンテナはソースコンテナによって指定された情報を見ることができます。

カスタムコンテナ名

接続システムはコンテナの名前に基づいて実行されるため、比較的シンプルで区別しやすいコンテナ名をカスタマイズする必要があります。

カスタム命名では、以前の記事で説明した --name パラメータを使用します。

docker run -d -p --name db mysql

コンテナ名は一意である必要があります。

docker run 実行時に --rm パラメータを追加すると、終了直後にコンテナが削除されます。ただし、-d パラメータとの併用はできません。

コンテナ相互接続

--link パラメータを使用して、コンテナ間のやり取りのための安全な接続を確立します。

次に例を示します。

まずデータベース コンテナを作成します。

docker run -d --name db トレーニング/postgres

次に、Web コンテナを作成します。

docker run -d -P --name web --link db:db training/webapp python app.py

この時点で、db コンテナと web コンテナは相互接続されます。

--link パラメータ: --link name:alias、name は接続するコンテナの名前、alias はこの接続のエイリアスです。

docker ps を使用してコンテナ情報を表示できます。名前の列には相互接続のステータスが表示されます。

Docker は相互接続された 2 つのコンテナ間に安全なトンネルを確立し、ポートをホストにマッピングする必要をなくし、ポートの公開を防ぎます。

Docker は接続情報を 2 つの方法で公開します。

  • 環境変数
  • /etc/hosts ファイルを更新する

env コマンドを使用して、Web コンテナの環境変数を表示します。

docker run --rm --name web2 --link db:db training/webapp env ...

DB_ で始まる環境変数は、Web コンテナが db コンテナに接続するために使用され、大文字の接続エイリアスがプレフィックスとして付けられます。

Docker は環境変数に加えて、親コンテナの /etc/hosts ファイルにホスト情報も追加します。 Web コンテナはデフォルトのホスト名として独自の ID を使用し、db コンテナはホスト名として db を使用します。

たとえば、複数の Web から DB へのコンテナーの場合、複数の子コンテナーを親コンテナーにリンクできます。

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

以下もご興味があるかもしれません:
  • Docker のデフォルト ブリッジ ネットワークで DNS を構成する方法
  • ブリッジネットワークを使用してDockerネットワークを構成する方法
  • Docker ポイントツーポイント コンテナ ネットワーク構成
  • CentOS Dockerネットワーク構成の変更方法の共有
  • Dockerの基礎: ネットワーク構成の詳細な説明
  • コンテナネットワーク例のDocker手動設定の詳細な説明
  • DockerにおけるVLANネットワークモードの設定の詳細な説明

<<:  JavaScriptは4桁のランダム検証コードの生成を実装します

>>:  CentOS 上での MySQL 5.6 のコンパイルとインストール、および複数の MySQL インスタンスのインストールの詳細な説明

推薦する

JavaScript でアルゴリズムの複雑さを学ぶ方法

目次概要Big O 表記法とは何ですか?オー(1)の上) (n^2) O(logn) ですの上!)結...

HTML ファイルにフラッシュ ビデオ形式 (flv、swf) ファイルを埋め込む方法

Flash ファイル形式: .FLV および .SWFフラッシュ ビデオ形式には、.flv と .s...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

TypeScript をインストール、使用、自動コンパイルする方法に関するチュートリアル

1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...

WeChatアプレットの入力レベルとテキストエリアレベルの浸透率が高すぎる問題の解決策

WeChat ミニプログラムのネイティブ コンポーネントであるカメラ、キャンバス、入力 (フォーカス...

Docker-compose は Docker プライベート ウェアハウスのステップを迅速に構築します

docker-compose.ymlを作成し、次の内容を入力します。 バージョン: '3&#...

データベースインデックスの知識ポイントの概要

目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...

HTMLフローティングプロンプトボックス機能の実装コード

一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...

JavaScriptは4桁のランダム検証コードの生成を実装します

この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...

Dockerはコード検出プラットフォームSonarQubeを構築し、Mavenプロジェクトのプロセスを検出します

1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...

WeChat パブリック アカウントの録音ファイルを再生して保存します (amr ファイルを mp3 に変換)

目次オーディオトランスコーディングツール原理JAVE プロジェクトの問題このプロジェクトの特徴拡張機...

クラウド決済を実装するWeChatミニプログラムについて

目次1. はじめに2. 思考分析3. クラウド決済のケーススタディ1. クラウド機能1-1. 認証不...

nginx で Vue プロジェクトをデプロイする方法

今日は nginx サーバーを使用するのですが、vue プロジェクトをサーバーにデプロイする必要もあ...

Tomcat でタイムアウトしたセッションを監視および削除する方法

序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...