Tutorial Docker — #8 Docker Networks: Connecting Containers
Seri Belajar Docker dalam Bahasa Indonesia
Halo, bagi kalian yang belum paham mengenai Docker bisa membaca artikel sebelumnya:
Overview
Pada materi sebelumnya, kita sudah mencoba berbagai macam konfigurasi untuk satu container. Contohnya static landing page (Welcome to Nginx).
Tapi, bagaimana jika menerapkan container terhadap dynamic page/website dan mobile app?
Pastinya membutuhkan banyak container yang didalamnya pun banyak images supaya saling berkomunikasi.
Container akan berkomunikasi menggunakan network drivers yang disebut sebagai Docker Network Drivers.
Apa Saja yang dimiliki oleh Docker Network Drivers?
- Sebuah software yang mengizinkan container saling berkomunikasi
- Bisa digunakan oleh satu host atau mulit-host
- Native network drivers berada di Docker Engine
- Remote network drivers akan disediakan dan dibuat oleh pihak ketiga (third-party vendors/community)
- IPAM (IP Address Management) bisa menggunakan default subnets
Container Networking Model
Host Network Infrastructure
Lingkungan ini merupakan tempatnya network device (ethernet, WiFi) dan OS kernel (yang sedang kita gunakan adalah Linux Ubuntu)
Network & IPAM Drivers
Docker networking drivers
Docker Engine
Untuk membuat setiap objek untuk Docker
Container Network
Container berjalan diatas stack infrastructure, network & IPAM, dan Docker Engine.
Tanda panah menunjukkan virtual ethernet yang terdapat IP address, MAC address, dan ports.
Native & Remote Drivers
Dari sub-bab sebelumnya, kita bisa menyingkat diagramnya menjadi seperti dibawah ini
Lalu, bagaimana diagram yang tepat untuk menggambarkan Docker Network?
Host Network
Container akan memiliki IP Address yang sama dengan interface nya host. Pada kasus ini, host menggunakan interface ethernet0 dengan IP 192.168.0.1 maka container yang menggunakan host network akan memiliki IP 192.168.0.1 (sama dengan milik host)
Kalo ada kasus yang menggunakan lebih dari satu container dengan IP Address yang sama, maka container tersebut akan membentuk virtual ethernet supaya bisa komunikasi.
Bridge Network
Bridge adalah cara default yang digunakan oleh Docker Network. Setiap container akan memiliki IP Address dan terhubung dengan virtual ethernet serta berkomunikasi menggunakan virtual bridge.
Bridge pun dapat menyembunyikan DNS atau IP dari host.
Overlay Network
Overlay
Biasa digunakan untuk single host docker infrastructure. Pada Docker community dan enterprise, kalian akan menemukan clusters dari Docker host yang akan running, connected, selaras dengan container.
Cara ini bisa disebut “swarm mode”. Swarm akan bergantung pada penyediaan overlay network.
Underlay
Melihat seluruh data source & destination untuk hosts IP Address
Membuat Docker Networks
- Membuat bridge network dengan settingan default
$ docker network create --driver bridge bridge1
Catatan:
--driver bridge
(flag, bridge bisa diubah sesuai kebutuhan Docker native network)
- Membuat bridge network dengan settingan custom
$ docker network create --driver bridge --subnet=192.168.0.0/16 --ip-range=192.168.10.0/24 bridge-2-cst
Catatan:
--subnet
(network mask)
--ip-range
(IP yang tersedia untuk host)
- Cek setiap network drivers
$ docker network ls
- Kalo kalian ingin memfilter pencarian Docker network, gunakan cara dibawah
$ docker network ls --filter driver=bridge
Implementasi Docker Networks
Connect
- Aktifkan container yang ingin kita koneksikan
$ docker ps -a
- Masukkan bridge-2-cst ke cont_expose
$ docker network connect bridge-2-cst cont_expose
Inspect
- Gunakan
inspect
command untuk melihat informasi container, IP untuk cont_expose adalah 192.168.10.1
$ docker container inspect cont_expose
- Gunakan
inspect
command untuk melihat informasi network, bridge-2-cst berada di cont_expose
$ docker network inspect bridge-2-cst
- Coba buka browser dan masukkan IP Address container yang ada di inspect (mungkin punya kalian dan punya gua berbeda)
Disconnect
- Putus komunikasi pada container
$ docker network disconnect bridge-2-cst cont_expose
- Cek menggunakan inspect
$ docker network inspect bridge-2-cst
Have a nice day!
Ghifari Nur Athoillah, Mahasiswa di Program Profesi CCIT-Fakultas Teknik Universitas Indonesia