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 nginx

Kelebihan:

  • Isolasi jaringan antar-container.

  • Bisa saling akses pakai nama container.

Kekurangan:

  • Tidak bisa diakses langsung dari luar host tanpa -p atau --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 nginx

Kelebihan:

  • 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 nginx

Kelebihan:

  • 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 sh

Kelebihan:

  • 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_overlay

Kelebihan:

  • 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_net
docker run -it --rm --network macvlan_net alpine sh

Kelebihan

  • 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