Cara Mengelola Network di Docker Secara Efektif

Cara Install Docker di Ubuntu 20.04 LTS (Lengkap untuk DevOps dan Server Production)

Docker menyediakan sistem networking bawaan yang memungkinkan container saling berkomunikasi maupun terhubung ke jaringan eksternal. Pemahaman mengenai Docker network sangat penting dalam implementasi aplikasi berbasis container, terutama dalam konteks DevOps, microservices, dan lingkungan produksi.

Secara default, container Docker menggunakan network driver bertipe bridge. Namun, Docker juga menyediakan beberapa jenis network driver lain yang dapat disesuaikan dengan kebutuhan arsitektur aplikasi.

Artikel ini membahas jenis-jenis network driver di Docker serta cara membuat, menghubungkan, dan mengelola network secara praktis.

Jenis Network Driver di Docker

Docker mendukung beberapa network driver dengan fungsi yang berbeda-beda:

  • bridge
    Digunakan untuk menghubungkan container dalam satu host yang berada pada network yang sama.

  • host
    Menghilangkan isolasi network antara container dan host, sehingga container langsung menggunakan network milik host.

  • overlay
    Digunakan untuk menghubungkan beberapa Docker daemon dan memungkinkan komunikasi antar service dalam Docker Swarm.

  • macvlan
    Memberikan MAC address tersendiri pada container sehingga terlihat seperti perangkat fisik di jaringan.

  • none
    Menonaktifkan seluruh fitur networking pada container.

  • network plugin
    Menggunakan plugin pihak ketiga untuk kebutuhan networking khusus.

Melihat Network yang Tersedia di Docker

Untuk menampilkan seluruh network yang tersedia di Docker, jalankan perintah berikut:

docker network ls

Secara default, Docker akan menampilkan network bawaan seperti bridge, host, dan none.

Contoh output:

NETWORK ID NAME DRIVER SCOPE 1652fc7934a6 bridge bridge local 547776771fe2 host host local a4d149a845ae none null local

Default Bridge Network di Docker

Jika container dijalankan tanpa mendefinisikan network secara eksplisit, Docker akan otomatis menggunakan default bridge network.

Membuat Container Menggunakan Default Bridge

docker run -d --name node1 nginx:stable-alpine docker run -d --name node2 nginx:stable-alpine

Mengecek Informasi Network Container

docker inspect node1

Pada bagian Networks, akan terlihat bahwa container menggunakan network bridge dengan IP address yang diberikan secara otomatis.

Contoh informasi penting:

"Gateway": "172.17.0.1", "IPAddress": "172.17.0.2"

Gateway tersebut menggunakan interface docker0 pada host.

Mengecek Interface docker0 di Host

ifconfig docker0

Interface ini berfungsi sebagai gateway utama bagi container yang berada di default bridge network.

Melihat Detail Bridge Network

Untuk melihat container apa saja yang terhubung ke network bridge, gunakan perintah berikut:

docker network inspect bridge

Pada bagian Containers, akan terlihat daftar container beserta IP address masing-masing.

Komunikasi Antar Container di Default Bridge

Container yang berada di default bridge network dapat saling berkomunikasi menggunakan IP address.

Uji Ping Antar Container

docker exec node1 ping 172.17.0.3

Pada default bridge network, container tidak dapat saling berkomunikasi menggunakan hostname secara otomatis. Oleh karena itu, penggunaan IP address menjadi keharusan.

Membuat User-Defined Bridge Network

Untuk mengatasi keterbatasan default bridge, Docker menyediakan user-defined bridge network yang mendukung resolusi hostname secara otomatis.

Membuat Bridge Network Baru

docker network create net-web

Menampilkan Daftar Network

docker network ls

Network net-web akan muncul dengan driver bridge.

Menjalankan Container dengan Network Tertentu

Container dapat langsung dihubungkan ke network tertentu saat dijalankan.

docker run -d --name node1 --network net-web nginx:stable-alpine docker run -d --name node2 --network net-web nginx:stable-alpine

Uji Komunikasi Menggunakan Hostname

docker exec node1 ping node2

Dengan user-defined bridge network, Docker menyediakan DNS internal sehingga container dapat saling mengenali berdasarkan nama container.

Menghubungkan Container yang Sudah Ada ke Network

Container yang telah dibuat sebelumnya dapat dihubungkan ke network lain tanpa perlu dibuat ulang.

Menghubungkan Container ke Network

docker network connect net-web node1 docker network connect net-web node2

Melepaskan Container dari Network

docker network disconnect net-web node1

Perintah Penting Docker Network

Berikut beberapa perintah penting untuk manajemen network di Docker:

Menampilkan semua network:

docker network ls

Membuat network baru:

docker network create nama-network

Menghubungkan container ke network:

docker network connect nama-network nama-container

Melepaskan container dari network:

docker network disconnect nama-network nama-container

Melihat detail network:

docker network inspect nama-network

Menghapus network:

docker network rm nama-network

Menghapus semua network yang tidak digunakan:

docker network prune

Kesimpulan

Manajemen network di Docker merupakan aspek krusial dalam membangun aplikasi berbasis container yang aman, terstruktur, dan scalable. Pemilihan network driver yang tepat serta penggunaan user-defined bridge network akan sangat membantu dalam pengelolaan komunikasi antar container.

Dengan memahami konsep dan perintah Docker network, proses deployment dan troubleshooting aplikasi dapat dilakukan dengan lebih efisien, terutama dalam lingkungan DevOps dan microservices.