目次
1. オーバーレイ ネットワークとは何ですか?
Docker では、オーバーレイ ネットワークは、複数の Docker ホスト上に仮想ネットワークを作成できるようにするコンテナ ネットワーク ドライバーであり、コンテナがこのネットワークを通じて相互に通信できるようにします。
オーバーレイ ネットワークは、VXLAN (Virtual Extensible LAN) テクノロジーを使用して、複数のホスト間の通信を実現します。各 Docker ホスト上のコンテナはオーバーレイ ネットワークに参加でき、基礎となるホストのネットワーク構成を知らなくても、あたかも同じホスト上にあるかのように通信できます。
コンテナーがネットワーク リクエストを送信すると、オーバーレイ ネットワーク ドライバーはそのリクエストを VXLAN パケットにカプセル化し、基盤となるホストの物理ネットワークを通じてターゲット コンテナーが配置されているホストに送信します。ターゲット ホスト上のオーバーレイ ネットワーク ドライバーは、VXLAN パケットのカプセル化を解除し、リクエストをターゲット コンテナーに渡します。
オーバーレイ ネットワークには次の特徴があります。
-
クロスホスト通信: コンテナは異なる Docker ホスト上で実行でき、オーバーレイ ネットワークを通じて通信できます。
-
自動ルーティング: オーバーレイ ネットワーク ドライバーはコンテナ間のルーティングを自動的に処理し、コンテナがコンテナ名によって直接通信できるようにします。
-
セキュリティ: オーバーレイ ネットワークは暗号化と認証を使用してコンテナ間の通信を保護し、データのセキュリティを確保します。
-
スケーラビリティ: オーバーレイ ネットワークは、複数のホスト上に数千のコンテナを作成でき、コンテナの動的な追加と削除を自動的に処理できます。
-
柔軟性: オーバーレイ ネットワークを他のネットワーク ドライバー (ブリッジ、ホストなど) と一緒に使用して、さまざまなネットワーク要件を満たすことができます。
オーバーレイ ネットワークは、Docker で一般的に使用されるネットワーク ドライバーの 1 つであり、ホスト間で通信する機能を提供し、分散環境でコンテナーがネットワーク経由で通信することを容易にします。
オーバーレイ環境を実装する
導入環境
CPU名 | IP |
---|---|
領事 | 192.168.2.5 |
ノード1 | 192.168.2.6 |
ノード2 | 192.168.2.7 |
1. Consul ホストに Consul イメージをダウンロードします。
[root@localhost ~]# docker pull progrium/consul
2. consulコンテナを起動します
[root@localhost ~]# docker run -d --restart always -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap -ui-dir /ui
3ae189bff461fc03e004598c399b5746085918a84effc0cea8c15306bfa53e3b
3. 3 つのホストのファイアウォールを閉じます。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables-save
4. すべてのノードで consul サーバー オプションを指定します。
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.2.5:8500 --cluster-advertise=ens33:2376
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
注: ここで、consul に接続するには、docker のバージョンを下げる必要があります。
[root@localhost ~]# yum -y remove docker-ce
[root@localhost ~]# yum -y install docker-ce-20.10.24-3.el7
5. 完了後、ノード上のいずれかのノードが
[root@localhost ~]# docker network create -d overlay --subnet 192.168.6.0/24 --gateway 192.168.6.254 ov_net1
6. 2 つのノードにそれぞれ作成されたオーバーレイ ネットワークのコンテナを生成し、オーバーレイ ネットワークを検証します
#node1操作
[root@localhost ~]# docker run -it --name test1 --network ov_net1 busybox
#node2操作
[root@localhost ~]# docker run -it --name test2--network ov_net1 busybox
7. 同じネットワークに相互に ping を送信します
/ # ping 192.168.6.1
PING 192.168.6.1 (192.168.6.1): 56 data bytes
64 bytes from 192.168.6.1: seq=0 ttl=64 time=0.450 ms
64 bytes from 192.168.6.1: seq=1 ttl=64 time=0.272 ms
64 bytes from 192.168.6.1: seq=2 ttl=64 time=0.379 ms