CodeGym /コース /Docker SELF /オーバーレイネットワークの学習

オーバーレイネットワークの学習

Docker SELF
レベル 18 , レッスン 1
使用可能

7.1 Overlayネットワークの学習 overlay

ネットワーク overlay — これは分散型Dockerネットワークで、異なるホスト上で動作するコンテナ同士が通信できるようになるんだ。これって、Docker SwarmやKubernetesみたいなコンテナのオーケストレーションをする際に、異なるノードで動作するコンテナ間の接続を確保するのに頻繁に使われるよ。このレクチャーでは、overlayネットワークを作成して使う方法だけじゃなくて、これを使った例も見ていこう!

ネットワーク overlay、既存のネットワーク上に仮想分散ネットワークを作成し、複数のホストを1つのネットワーク空間に統合するんだ。これによって、ホストの物理的な位置に関係なく、全てのコンテナがまるで同じローカルネットワークにいるかのように動作できるんだよ。

overlayネットワークを使うメリット:

  1. 異なるホスト間のコンテナ通信: 異なるノード上で動作しているコンテナ同士のネットワーク通信を確保するんだ。
  2. 分離性: 異なるアプリケーション用の隔離されたネットワークスペースを作れるよ。
  3. スケーラビリティ: ノードの動的な追加や削除が、作業を中断することなく行えるんだよね。

7.2 overlay ネットワークの作成

overlay ネットワークを作成するには、まずDocker Swarm クラスターを初期化する必要があるよ。それによってマネージャーノードが作成されて、分散ネットワークを作成できるようになるんだ。

手順1: Docker Swarm の初期化

クラスターのマネージャーとなるホストでコマンドを実行してね。このコマンドによってSwarm クラスターが初期化され、他のノードをクラスターに参加させるためのコマンドが表示されるよ。

ターミナル

docker swarm init

手順2: 作業ノードをクラスターに参加させる

他のホストでdocker swarm init が出力したコマンドを実行して、そのホストをクラスターに参加させてね。コマンドの例は以下だよ:

ターミナル

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

手順3: overlay ネットワークを作成する

クラスターが初期化されたら、以下のコマンドを使ってoverlay ネットワークを作成しよう:

ターミナル

docker network create -d overlay my_overlay_network

手順4: ネットワークの確認

ネットワークが正常に作成されたかどうかを確認するには、docker network ls コマンドを実行してね。このコマンドは全てのネットワークのリストを出力して、新しいoverlay ネットワークも含まれているよ。

ターミナル

docker network ls

出力例:

ターミナル

NETWORK ID     NAME                DRIVER    SCOPE
a1b2c3d4e5     my_overlay_network overlay  swarm

これでmy_overlay_network ネットワークが分散アプリケーションで使用できる状態になったよ。

7.3 overlayネットワークの使い方

ネットワークを作成したので、これでコンテナやサービスをこのネットワークに接続して実行できるよ。

サービスにおけるoverlayネットワークの使用例

Docker Swarmでは、サービスを使ってコンテナを管理することができるんだ。いくつかのサービスを作成して、それらをoverlayネットワークに接続しよう。

ステップ 1: ウェブサーバーサービスの作成

ターミナル

docker service create --name webserver --network my_overlay_network -p 8080:80 nginx

このコマンドはwebserverサービスを作成して、ネットワークmy_overlay_networkに接続するよ。ウェブサーバーはhttp://localhost:8080でアクセスできる。

ステップ 2: データベースサービスの作成

ターミナル

docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres

ここで、同じネットワークに接続されたdatabaseサービスを作成するよ。環境変数POSTGRES_PASSWORDも設定しよう。

ステップ 3: サービス間の接続確認

接続確認には、一時的なコンテナを起動して試してみよう:

ターミナル

docker run -it --network my_overlay_network busybox

コンテナ内でpingコマンドを使って、ウェブサーバーやデータベースへの接続を確認してみてね:

ターミナル

ping webserver
ping database

設定が正しく行われていれば、pingが成功したことを示して、コンテナがホスト名を使ってやり取りできることを確認できるよ。

ステップ 4: サービスのステータスを確認

コマンドdocker service lsを使って、作成されたサービスのステータスを確認しよう:

ターミナル

docker service ls

期待される出力では、起動中のサービスの情報、ステータス、複製数を表示するよ。

注意: overlayネットワークは、複数のホストに接続されたコンテナ間でデータのやり取りを可能にするんだ。これには同じSwarmクラスタに接続している必要があるよ。

7.4 overlay ネットワークを Docker Compose で使用する例

Docker Compose は複数コンテナのアプリケーションやネットワークの管理を簡素化するよ。 docker-compose.yml ファイルで overlay ネットワークを定義して、そのネットワークを使ってコンテナ間をつなげることができるんだ。

docker-compose.yml ファイルの例:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - my_overlay_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    networks:
      - my_overlay_network
        
networks:
  my_overlay_network:
    driver: overlay
    attachable: true

Docker Compose の起動:

Terminal

docker stack deploy -c docker-compose.yml mystack

このコマンドは docker-compose.yml ファイルを使ってスタックをデプロイし、ネットワーク my_overlay_network に接続されたサービスを作成するよ。

実践的なヒント:

  1. ネットワークのモニタリング: Docker Swarm のモニタリングツール(例えば Docker Dashboard や Prometheus)を使って、ネットワークの状態やコンテナ間のやり取りを追跡しよう。
  2. スケーラビリティの管理: Overlay ネットワークはノードの動的追加や削除をサポートしてるよ。アプリケーションをスケールさせるために、ネットワークリソースを正しく設定しよう。
  3. 構成のバックアップ: 障害が発生した場合に素早く復旧できるように、ネットワークやスタックの設定を定期的に保存しよう。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION