Setiap state pada Chapter Container State menggambarkan container dalam dimensi waktu, sedangkan driver jaringan menempatkan container dalam dimensi ruang: siapa yang bisa menjangkaunya, melalui kabel virtual apa, dan dengan alamat berapa. Docker menyediakan enam network driver resmi yang menentukan seluruh mekanisme itu — dari bridge bawaan yang kita pakai tanpa sadar sejak container pertama, sampai overlay yang menyatukan container lintas host fisik, peta yang sudah kita bedah pada Chapter Konsep Networking Docker. Chapter ini merangkum keenam driver, sembilan perintah jaringan yang melayani mereka, dan tiga alamat istimewa yang muncul terus di dalam container.
Enam Driver Jaringan #
Driver menentukan bagaimana sebuah network dibangun di balik layar: apakah container mendapat namespace sendiri, apakah paket melewati NAT, dan apakah container bisa dijangkau dari luar host. Tabel berikut memetakan keenamnya dengan empat kolom — Driver, Isolasi, Use case, dan Catatan:
| Driver | Isolasi | Use case | Catatan |
|---|---|---|---|
bridge | Namespace jaringan sendiri, terhubung lewat veth ke docker0 | Default — komunikasi antar container pada satu host | Embedded DNS hanya aktif di custom network; akses dari luar lewat -p; satu host saja |
host | Tanpa namespace — stack jaringan host dipakai langsung | Kinerja jaringan maksimal atau akses penuh ke interface host | Port container adalah port host — -p dibuang sama sekali; Linux saja |
none | Namespace tetap dibuat, tanpa interface selain loopback | Isolasi total — batch job dan komputasi tanpa akses jaringan | Tidak ada konektivitas keluar maupun masuk |
overlay | Jaringan virtual lintas host lewat enkapsulasi VXLAN | Container di beberapa host fisik sebagai satu network | Service discovery bawaan Swarm; butuh cluster, materi Chapter Docker Swarm |
macvlan | Container mendapat MAC address sendiri di jaringan fisik | Container harus tampil sebagai perangkat nyata di LAN | Tanpa NAT; port switch harus mengizinkan banyak MAC address |
ipvlan | Container berbagi MAC induk dengan alamat IP unik | Lingkungan yang membatasi jumlah MAC per port switch | Beroperasi di lapisan L3 — routing, bukan switching |
Satu aturan tentang driver bridge menyelamatkan kita dari kebingungan yang paling klasik: embedded DNS di 127.0.0.11 hanya aktif pada user-defined network, bukan pada bridge default — jadi komunikasi antar-container dengan nama memang mustahil di bridge bawaan, dan solusinya selalu membuat custom network seperti net-aplikasi kita, praktik standar dari Chapter Membuat Custom Network. Bridge default tetap berguna untuk container tunggal yang hanya butuh keluar ke internet, tetapi begitu dua container perlu saling memanggil, custom network adalah satu-satunya jalur yang benar — materi lengkap Chapter Container DNS dan Komunikasi Antar Container.
Sembilan Perintah Network #
Sembilan perintah berikut mengurus seluruh daur hidup jaringan — menciptakan, memeriksa, mengisi, dan membongkar. Daftar network di host bisa dibaca kapan saja lewat docker network ls:
$ docker network lsOutput yang Dihasilkan:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5f6 bridge bridge local
9f8e7d6c5b4a host host local
3e4f5a6b7c8d none null local
7c8d9e0f1a2b net-aplikasi bridge localMari kita telaah tiga baris pertama pada output tersebut:
bridge,host,none— tiga network bawaan yang hadir sejak daemon pertama menyala, satu untuk setiap driver inti.- Driver
nullpada none — nama driver di kolom keempat untuk network tanpa jaringan; inilah pasangan networknoneyang kita bedah pada Chapter None Network. net-aplikasi— satu-satunya baris buatan kita; network inilah rumah bagiweb,app, dandbsepanjang Section Jaringan Container.
Perintah-perintah yang bekerja di atas network-network tersebut:
| Perintah | Fungsi | Contoh |
|---|---|---|
docker network create | Membuat user-defined network | docker network create net-aplikasi |
docker network ls | Menampilkan daftar network beserta driver-nya | docker network ls |
docker network inspect | Menampilkan subnet, gateway, dan anggota container | docker network inspect net-aplikasi |
docker network connect | Memasukkan container berjalan ke sebuah network | docker network connect net-aplikasi web |
docker network disconnect | Melepas container dari sebuah network | docker network disconnect net-aplikasi web |
docker network rm | Menghapus network kosong | docker network rm net-aplikasi |
docker network prune | Menghapus seluruh network tanpa penghuni | docker network prune |
docker run --network | Menempatkan container baru di network tertentu | docker run -d --network net-aplikasi --name db postgres:18-alpine |
docker run --network-alias | Memberi nama panggilan tambahan saat membuat container | docker run -d --network net-aplikasi --network-alias cache redis:7-alpine |
Tiga Alamat Istimewa #
Di dalam sebuah container, tiga alamat memegang peran tetap dan muncul berulang kali sepanjang Course — dari resolv.conf sampai koneksi database. Tabel berikut merangkum ketiganya:
| Alamat | Perannya | Kapan tersedia |
|---|---|---|
127.0.0.11 | Nameserver embedded DNS di dalam container | Hanya pada user-defined network |
host.docker.internal | Nama khusus yang menunjuk ke host | Bawaan Docker Desktop; di Linux perlu --add-host=host.docker.internal:host-gateway |
172.17.0.1 | Gateway docker0 — wajah host di bridge default | Selalu; custom network mendapat pool berurutan berikutnya |
Aturan pool subnet-nya satu baris: daemon membagi alamat secara berurutan — 172.17.0.0/16 untuk docker0, lalu network baru menerima 172.18.0.0/16, 172.19.0.0/16, dan seterusnya, sehingga gateway net-aplikasi kita adalah 172.18.0.1. Nomor pool ini tidak boleh dihafal sebagai identitas — container bisa pindah-pindah alamat — melainkan sebagai pola pembagian wilayah.
Alamat 127.0.0.11 adalah pintu ke dua dunia DNS sekaligus. Daemon menjalankan satu server DNS kecil di setiap container user-defined network: untuk pertanyaan tentang nama internal — nama container, alias, nama service Compose — server menjawab sendiri dari tabelnya; untuk pertanyaan tentang domain luar seperti example.com, server meneruskan (forward) ke nameserver upstream yang dibawa dari konfigurasi host. Satu alamat, dua sumber jawaban — pembagian kerja yang kita buktikan lewat nslookup dan getent pada Chapter Container DNS, dan alasan container bisa memanggil db dan registry-1.docker.io lewat nameserver yang sama.
Driver jaringan mengatur lalu lintas, tetapi Docker juga punya dunia bawah tanah yang bekerja setiap kali image dibangun dan container menulis berkas: storage driver dan snapshotter. Chapter berikutnya, Storage Driver dan Snapshotter, membedakan keduanya — keluarga driver lawas dari era sebelum containerd dan pasangan snapshotter modern yang kini menjadi bawaan Engine 29.
Referensi #
- Docker networking — konsep jaringan Docker beserta seluruh driver-nya.
- Network drivers — detail perilaku tiap driver: bridge, host, none, overlay, macvlan, ipvlan.
- docker network — referensi seluruh subperintah jaringan.