Opsi --alias
dapat digunakan untuk resolve container dengan nama lain di jaringan yang terhubung.
Network alias ini tidak jauh berbeda seperti saat membuat network baru dengan driver bridge
lalu setelah container dihubungkan dengan bridge,
container satu sama lain dapat saling ping
menggunakan nama container tersebut. Detailnya dapat Anda simak disini
Untuk simulasi network alias akan dicoba dengan menginstall consul di docker.
Docker #
Buat network bridge dengan nama dc1
docker network create -d bridge dc1
Lalu buat 4 container consul menggunakan perintah berikut.
docker run -dit --name control-1 -e CONSUL_BIND_INTERFACE=eth0 \
--network dc1 --network-alias control_cluster \
consul agent -server -ui -node=control-1 -client=0.0.0.0 -bootstrap-expect=2 -retry-join control_cluster
Selanjutnya cek consul members
$ docker exec control-1 consul members
Node Address Status Type Build Protocol DC Partition Segment
control-1 172.19.0.2:8301 alive server 1.15.2 2 dc1 default <all>
control-2 172.19.0.3:8301 alive server 1.15.2 2 dc1 default <all>
control-3 172.19.0.4:8301 alive server 1.15.2 2 dc1 default <all>
control-4 172.19.0.5:8301 alive server 1.15.2 2 dc1 default <all>
Status alive berarti 4 container sudah saling terhubung dengan network alias control_cluster
.
Pengetesan selanjutnya Anda dapat masuk ke terminal salah satu container
docker exec -it control-1 sh
Test ping
ke tujuan network alias control_cluster
/ # ping -c4 control_cluster
PING control_cluster (172.19.0.4) 56(84) bytes of data.
64 bytes from control-3.dc1 (172.19.0.4): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from control-3.dc1 (172.19.0.4): icmp_seq=2 ttl=64 time=0.140 ms
64 bytes from control-3.dc1 (172.19.0.4): icmp_seq=3 ttl=64 time=0.095 ms
64 bytes from control-3.dc1 (172.19.0.4): icmp_seq=4 ttl=64 time=0.090 ms
Output ping akan mengarah ke container yang terhubung ke network alias yang sama.
Lalu coba test ping
kembali
/ # ping -c4 control_cluster
PING control_cluster (172.19.0.5) 56(84) bytes of data.
64 bytes from control-4.dc1 (172.19.0.5): icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from control-4.dc1 (172.19.0.5): icmp_seq=2 ttl=64 time=0.097 ms
64 bytes from control-4.dc1 (172.19.0.5): icmp_seq=3 ttl=64 time=0.100 ms
64 bytes from control-4.dc1 (172.19.0.5): icmp_seq=4 ttl=64 time=0.080 ms
Output akan mengarah ke container lainnya.
Docker Stack #
Untuk menambahkan network alias agar bisa di deploy dengan docker stack.
Buat file dengan nama stack.yml lalu tambahkan konfig berikut.
version: "3.8"
networks:
backend:
services:
consul:
image: consul:latest
networks:
backend:
aliases:
- consul_cluster
environment:
- CONSUL_BIND_INTERFACE=eth0
command: agent -server -ui -client 0.0.0.0 -retry-join consul_cluster -bootstrap-expect=2
deploy:
replicas: 2
endpoint_mode: dnsrr
placement:
max_replicas_per_node: 1
update_config:
parallelism: 1
delay: 60s
restart_policy:
condition: on-failure
ports:
- target: 8500
published: 8500
protocol: tcp
mode: host
Deploy dengan perintah
docker stack deploy -c stack.yml consul
Selanjutnya dapat Anda test dengan cara yang sama seperti sebelumnya.