CodeGym /コース /Docker SELF /カスタムネットワークの利用方法

カスタムネットワークの利用方法

Docker SELF
レベル 17 , レッスン 4
使用可能

5.1 カスタムネットワークの主な種類

Dockerのカスタムネットワークは、コンテナ間のネットワーク相互作用を柔軟に設定および管理するための機能を提供するよ。これにより、コンテナを分離し、相互作用を整理して、複雑なネットワークトポロジーを作成できるんだ。この講義では、Dockerでカスタムネットワークを作成して設定する方法やその使用例を見ていくよ。

カスタムネットワークの主な種類

Dockerではいくつかの種類のカスタムネットワークをサポートしてて、それぞれが特定のシナリオに適しているよ:

  1. Bridge (ブリッジネットワーク): 同じホスト上のコンテナ間の分離と通信を提供するんだ。この種類のネットワークは、ホスト外の相互作用を必要としないローカルアプリケーションでデフォルトで使用されるよ。
  2. Overlay (オーバーレイネットワーク): Docker SwarmやKubernetesのクラスタで、異なるホスト上で動作するコンテナ間の通信を意図してる。これにより、分散アプリケーションの高いスケーラビリティとセキュリティが確保されるよ。
  3. Macvlan: コンテナがホストの物理ネットワークインターフェースを直接使用できるのを可能にするよ。これって、パフォーマンスに高い要件があるネットワークアプリケーションや、特定のMACアドレスにバインドする必要がある場合に便利なんだ。Macvlanネットワーク内のコンテナは、物理ネットワーク内の他のデバイスと別個のノードとして通信できます。
  4. Host (ホストネットワーク): コンテナがホストのネットワークスタックを使用するんで、ネットワーク仮想化のオーバーヘッドをなくすけど、隔離が減るよ。このネットワークは、最大のネットワークパフォーマンスが必要なアプリケーションに適してるね。

5.2 ブリッジネットワークの作成と使用

ブリッジネットワーク(bridge)は最も一般的なタイプのカスタムネットワークで、1つのホスト内でコンテナを分離するために使用されるんだ。ブリッジネットワークに接続されたコンテナ同士は、IPアドレスやホスト名を通じて相互にやり取りできるよ。

カスタムのbridge ネットワークを作成する

カスタムのbridge ネットワークを作成するには、docker network createコマンドを使ってね:

ターミナル

docker network create --driver bridge my_bridge_network

カスタムネットワークでコンテナを起動する

作成したネットワークに接続して、コンテナを起動してみよう:

ターミナル

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network busybox sleep 1000

コンテナ間の接続確認

コンテナ間の接続を確認するためにpingコマンドを使えるよ:

ターミナル

docker exec container2 ping -c 4 container1

コンテナが正しくmy_bridge_networkに接続されていれば、pingコマンドは成功するはずだよ。

5.3 Docker Compose でのカスタムネットワーク

Docker Compose でのカスタムネットワークの使用例

Docker Compose を使えば、マルチコンテナアプリケーションのネットワーク作成と管理が簡単になるよ。カスタムネットワークは docker-compose.yml ファイル内で定義できるんだ。

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

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network

  app:
    image: myapp:latest
    networks:
      - my_bridge_network

networks:
  my_bridge_network:
    driver: bridge

Docker Compose を起動してみよう:

Terminal

docker compose up -d

この例では、両方のサービス (webapp) がカスタムネットワーク my_bridge_network に接続されているよ。

5.4 macvlanネットワークの設定と使用

macvlanネットワークは、コンテナがホストの物理ネットワークインターフェイスを直接使用できるようにするから、ネットワーク性能への高い要求があるアプリに便利なんだよね。このネットワークでは、コンテナごとに指定されたサブネット内でユニークなIPアドレスが割り当てられるから、ホストと同じネットワーク内で見えるようになるんだ。

macvlanネットワークの作成

ターミナル

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network

このコマンドの内容:

  • --subnet: コンテナが存在するサブネットを定義する。
  • --gateway: コンテナのゲートウェイを指定する。
  • -o parent: ネットワークがバインドされるホストのネットワークインターフェイスを示す。

macvlanネットワークでコンテナを起動する

ターミナル

docker run -d --name container1 --network my_macvlan_network nginx

docker run -d --name container2 --network my_macvlan_network busybox sleep 1000

この例では、両方のコンテナがmy_macvlan_networkネットワークに接続されてて、物理インターフェイスeth0を通じて外部ネットワークにアクセスできるんだよ。

5.5 Docker Composeでの使用例

また、macvlanネットワークをDocker Composeで使用することができます。例えば:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_macvlan_network
        
networks:
  my_macvlan_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Docker Composeを起動します:

Terminal

docker compose up -d

この例では、ネットワークmy_macvlan_networkはサービスwebがサブネット192.168.1.0/24にあるデバイス(ホストを含む)とやり取りすることを可能にします。

実践的なヒント:

  • アクセス設定: ルーターまたはネットワーク管理者がmacvlanの設定で指定されたサブネットの使用を許可していることを確認してください。
  • 分離: セキュリティが重要である場合、ネットワークのセグメンテーションのためにVLANを使用して、コンテナが必要なリソースだけにアクセスできるようにしてください。
  • テスト: 設定を終えたら、pingまたはcurlコマンドを使ってコンテナ間および外部ネットワークとの通信をテストしてください。

5.6 マイクロサービス向けネットワーク使用例

フロントエンド、バックエンド、データベースがそれぞれ異なるネットワークに分離されているけど、それでもネットワークを共有してやり取りができる例を見てみよう。

docker-compose.yml ファイル

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
      - db-tier
        
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - db-tier
        
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
  db-tier:
    driver: bridge

Docker Compose を起動する:

Terminal

docker compose up -d 

この例では:

  • サービス frontend はネットワーク front-tierback-tier に接続されていて、外部のクライアントとバックエンドの両方とやり取りできる。
  • サービス backend はネットワーク back-tierdb-tier に接続されていて、フロントエンドとデータベースの両方とやり取りできる。
  • サービス database はネットワーク db-tier にのみ接続されていて、データベースが外部からアクセスされないようになっている。

実用的なアドバイス:

  • 分離を活用する: ネットワークの分離により、サービスへのアクセスや重要なリソースの保護が可能になるよ。
  • 接続を確認する: コマンド pingcurl を使って、サービス間の通信が正常か確認しよう。
  • 最適化: プロジェクトがクラスターや複数のホスト上で動作する場合は、overlay ネットワークを使うのがおすすめ。

この例では、ネットワークを分離しつつ、アプリケーションの異なるレベル間でのやり取りを可能にする方法を示しているよ。

1
Опрос
Dockerのネットワーク設定,  17 уровень,  4 лекция
недоступен
Dockerのネットワーク設定
Dockerのネットワーク設定
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION