Jaringan overlay memungkinkan setiap container yang ada dibeberapa host docker agar saling terhubung. Driver overlay membuat jaringan terdistribusi diantara beberapa host docker lalu secara transparan menangani perutean ke tujuan container yang terhubung pada jaringan overlay
Create the swarm #
Untuk prosedur pengetesan, siapkan dua host docker lalu gabungkan ke swarm agar dapat menggunakan jaringan overlay
Node 1 menjadi manager
docker swarm init --advertise-addr=<IP-ADDRESS-OF-MANAGER>
Node 2 menjadi worker
docker swarm join --token <TOKEN> \
--advertise-addr <IP-ADDRESS-OF-WORKER> \
<IP-ADDRESS-OF-MANAGER>:2377
List semua node pada node Manager
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
9ozwo0ro18qryz247xj8lywrl * control.topan.host Ready Active Leader 23.0.3
ohg51z7r9426wcvdhmp1rfzvd worker1.topan.host Ready Active 23.0.3
Setelah memastikan Node 1 dan Node 2 terhubung, network overlay akan otomatis terbuat.
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
35c7f5b8e93d bridge bridge local
6cb835d33ecb docker_gwbridge bridge local
c066dfd4012a host host local
mqrinhr1eqmh ingress overlay swarm
266a0a91f950 none null local
Create containers #
Pada node Manager
Buat network overlay dengan nama net-alpine
docker network create -d overlay net-alpine --attachable
Selanjutnya buat satu container pada masing-masing node
Node Manager
docker run -dit --name alpa --network net-alpine alpine ash
Node Worker
docker run -dit --name beta --network net-alpine alpine ash
Cek IP container yang ada pada node Worker
$ docker network inspect net-alpine | jq '.[].Containers'
{
"7e3f0df4787011fb67bebdd02c577b981152014b404b5098d1524d41a9ec6bbf": {
"Name": "beta",
"EndpointID": "2c78e4e5b91f5652aecf1cd7de6c570c8b6887aae5130c3656af27afcfd5bd09",
"MacAddress": "02:42:0a:00:01:04",
"IPv4Address": "10.0.1.4/24",
"IPv6Address": ""
},
"lb-net-alpine": {
"Name": "net-alpine-endpoint",
"EndpointID": "33441655ead0866cd4faa357f8bf09796dc6615010e34769a9272490fc5f795f",
"MacAddress": "02:42:0a:00:01:05",
"IPv4Address": "10.0.1.5/24",
"IPv6Address": ""
}
}
Pada node Manager
masuk ke terminal alpa
lalu test ping IP container beta
docker exec -it alpa ash
/ # ping -c4 10.0.1.4
PING 10.0.1.4 (10.0.1.4): 56 data bytes
64 bytes from 10.0.1.4: seq=0 ttl=64 time=0.942 ms
64 bytes from 10.0.1.4: seq=1 ttl=64 time=1.052 ms
64 bytes from 10.0.1.4: seq=2 ttl=64 time=1.002 ms
64 bytes from 10.0.1.4: seq=3 ttl=64 time=0.860 ms
Test ping menggunakan dengan nama container
/ # ping -c4 beta
PING beta (10.0.1.4): 56 data bytes
64 bytes from 10.0.1.4: seq=0 ttl=64 time=0.766 ms
64 bytes from 10.0.1.4: seq=1 ttl=64 time=0.879 ms
64 bytes from 10.0.1.4: seq=2 ttl=64 time=0.828 ms
64 bytes from 10.0.1.4: seq=3 ttl=64 time=0.938 ms