Network
bridge (default)
Default network untuk container Docker.
Container mendapat IP sendiri dari jaringannya (biasanya
172.x.x.x).Bisa saling berkomunikasi lewat DNS nama container jika berada di network yang sama.
Contoh:
docker run -d --name app1 --network bridge nginxKelebihan:
Isolasi jaringan antar-container.
Bisa saling akses pakai nama container.
Kekurangan:
Tidak bisa diakses langsung dari luar host tanpa
-patau--publish.
host
Container menggunakan network namespace milik host langsung.
Tidak punya IP sendiri, langsung share IP dan port dengan host.
Contoh:
docker run --network host nginxKelebihan:
Performa jaringan maksimal.
Cocok untuk container yang butuh bind ke port host secara langsung.
Kekurangan:
Tidak ada isolasi jaringan.
Bisa bentrok port jika banyak container pakai host mode.
none
Container tidak punya akses jaringan sama sekali.
Tidak terhubung ke network manapun.
Contoh:
docker run --network none nginxKelebihan:
Keamanan maksimal.
Kekurangan:
Tidak bisa komunikasi ke luar (tidak ada internet atau komunikasi antar-container).
container
Dua atau lebih container berbagi network namespace.
Seolah-olah berjalan di jaringan yang sama persis.
Contoh:
docker run -d --name app1 nginx
docker run -it --network container:app1 alpine shKelebihan:
Bisa saling akses tanpa port mapping.
Cocok untuk container sidecar.
Kekurangan:
Tidak fleksibel.
Container tergantung satu sama lain (jika salah satu mati, bisa berdampak).
overlay (untuk docker swarm)
Untuk komunikasi antar-container di beberapa host.
Cocok untuk cluster (Swarm mode).
Contoh:
docker network create -d overlay my_overlayKelebihan:
Multi-host networking.
Cocok untuk deployment besar atau service mesh.
Kekurangan:
Harus aktifkan Docker Swarm.
Konfigurasi lebih kompleks.
macvlan
Macvlan memungkinkan container Docker memiliki alamat MAC dan IP yang unik di jaringan fisik yang sama dengan host.
Dengan macvlan, container terlihat langsung sebagai perangkat fisik di jaringan lokal (LAN).
Jadi, container bisa komunikasi langsung dengan perangkat lain di jaringan yang sama tanpa melalui NAT atau routing host.
Contoh
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 macvlan_netdocker run -it --rm --network macvlan_net alpine shKelebihan
Container punya IP nyata di jaringan fisik.
Bisa komunikasi langsung dengan perangkat lain di LAN tanpa NAT.
Cocok untuk aplikasi yang butuh integrasi langsung ke jaringan (misal DHCP, perangkat IoT, VoIP, dsb).
Kekurangan
Container tidak bisa langsung komunikasi dengan host via IP karena macvlan memisahkan namespace jaringan. Ada trik agar host bisa akses container, tapi perlu konfigurasi tambahan (biasanya buat macvlan "sub-interface" di host).
Setup lebih rumit daripada bridge atau host.
Butuh kontrol jaringan fisik (misalnya kamu harus tahu subnet dan gateway).
Tidak semua environment (misal cloud provider) mendukung macvlan.
ipvlan
Mirip dengan macvlan tapi bekerja di layer IP (bukan layer MAC).
Container dapat IP unik dalam subnet yang sama dengan host, tapi menggunakan MAC address host.
Cocok untuk skenario tertentu di jaringan yang punya batasan MAC address.
Belum seterkenal macvlan tapi makin populer di jaringan enterprise.
User-defined network plugins
Docker mendukung plugin jaringan custom, misalnya:
wireguard
Calico
Cilium
Weave
Ini lebih umum di Kubernetes tapi bisa dipakai di Docker untuk advanced networking, policy, security, dll.
Last updated