Driver jaringan kontainer Windows
Berlaku untuk: Windows Server 2022, Windows Server 2019, Windows Server 2016
Selain memanfaatkan jaringan 'nat' default yang dibuat oleh Docker di Windows, pengguna dapat menentukan jaringan kontainer kustom. Jaringan yang ditentukan pengguna dapat dibuat menggunakan perintah Docker CLI docker network create -d <NETWORK DRIVER TYPE> <NAME>
. Pada Windows, tipe pengandar jaringan berikut ini tersedia:
Driver jaringan NAT
Kontainer yang terpasang pada jaringan yang dibuat dengan driver 'nat' akan terhubung ke sakelar Hyper-V internal dan menerima alamat IP dari awalan IP yang ditentukan pengguna (--subnet
). Penerusan / pemetaan port dari host kontainer ke titik akhir kontainer didukung.
Tip
Dimungkinkan untuk menyesuaikan subnet yang digunakan oleh jaringan 'nat' default melalui fixed-cidr
pengaturan dalam file konfigurasi daemon Docker.
Catatan
Jaringan NAT yang dibuat pada Windows Server 2019 (atau lebih tinggi) tidak lagi bertahan setelah reboot.
Membuat jaringan NAT
Untuk membuat jaringan NAT baru dengan subnet 10.244.0.0/24
:
docker network create -d "nat" --subnet "10.244.0.0/24" my_nat
Driver jaringan transparan
Kontainer yang terpasang pada jaringan yang dibuat dengan driver 'transparan' akan terhubung langsung ke jaringan fisik melalui sakelar Hyper-V eksternal . IP dari jaringan fisik dapat ditetapkan secara statis (memerlukan opsi yang ditentukan --subnet
pengguna) atau secara dinamis menggunakan server DHCP eksternal.
Catatan
Karena persyaratan berikut, menyambungkan host kontainer Anda melalui jaringan transparan tidak didukung di Azure VM.
Memerlukan: Ketika mode ini digunakan dalam skenario virtualisasi (host kontainer adalah VM) spoofing alamat MAC diperlukan.
Membuat jaringan transparan
Untuk membuat jaringan transparan baru dengan subnet 10.244.0.0/24
, gateway 10.244.0.1
, server 10.244.0.7
DNS, dan ID 7
VLAN :
docker network create -d "transparent" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent
Melapisi driver jaringan
Populer digunakan oleh orkestrator kontainer seperti Docker Swarm dan Kubernetes, kontainer yang melekat pada jaringan overlay dapat berkomunikasi dengan kontainer lain yang terpasang pada jaringan yang sama di beberapa host kontainer. Setiap jaringan overlay dibuat dengan subnet IP-nya sendiri, yang ditentukan oleh awalan IP privat. Driver jaringan overlay menggunakan enkapulasi VXLAN untuk mencapai isolasi lalu lintas jaringan antara jaringan kontainer penyewa dan memungkinkan penggunaan kembali alamat IP di seluruh jaringan overlay.
Memerlukan: Pastikan lingkungan Anda memenuhi prasyarat yang diperlukan ini untuk membuat jaringan overlay.
Memerlukan: Pada Windows Server 2019, ini memerlukan KB4489899.
Memerlukan: Pada Windows Server 2016, ini memerlukan KB4015217.
Catatan
Pada Windows Server 2019 ke atas, jaringan overlay yang dibuat oleh Docker Swarm memanfaatkan aturan NAT VFP untuk konektivitas keluar. Ini berarti bahwa kontainer tertentu menerima 1 alamat IP. Ini juga berarti bahwa alat berbasis ICMP seperti ping
atau Test-NetConnection
harus dikonfigurasi menggunakan opsi TCP/UDP mereka dalam situasi penelusuran kesalahan.
Membuat jaringan overlay
Untuk membuat jaringan overlay baru dengan subnet 10.244.0.0/24
, server 168.63.129.16
DNS, dan VSID 4096
:
docker network create -d "overlay" --attachable --subnet "10.244.0.0/24" -o com.docker.network.windowsshim.dnsservers="168.63.129.16" -o com.docker.network.driver.overlay.vxlanid_list="4096" my_overlay
Driver jaringan L2bridge
Kontainer yang terpasang pada jaringan yang dibuat dengan driver 'l2bridge' akan terhubung ke jaringan fisik melalui sakelar Hyper-V eksternal . Di l2bridge, lalu lintas jaringan kontainer akan memiliki alamat MAC yang sama dengan host karena operasi terjemahan alamat Layer-2 (penulisan ulang MAC) pada ingress dan egress. Di pusat data, ini membantu meringankan stres pada sakelar yang harus mempelajari alamat MAC dari kontainer yang terkadang berumur pendek. Jaringan L2bridge dapat dikonfigurasi dengan 2 cara berbeda:
- Jaringan L2bridge dikonfigurasi dengan subnet IP yang sama dengan host kontainer
- Jaringan L2bridge dikonfigurasi dengan subnet IP kustom baru
Dalam konfigurasi 2 pengguna harus menambahkan titik akhir pada kompartemen jaringan host yang bertindak sebagai gateway dan mengonfigurasi kemampuan perutean untuk awalan yang ditunjuk.
Membuat jaringan l2bridge
Untuk membuat jaringan l2bridge baru dengan subnet 10.244.0.0/24
, gateway 10.244.0.1
, server 10.244.0.7
DNS, dan ID VLAN 7:
docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_l2bridge
Tip
Jaringan L2bridge sangat dapat diprogram; Detail selengkapnya tentang cara mengonfigurasi l2bridge dapat ditemukan di sini.
Driver jaringan L2tunnel
Pembuatan identik dengan l2bridge, namun driver ini hanya boleh digunakan di Microsoft Cloud Stack (Azure). Satu-satunya perbedaan atas l2bridge adalah bahwa semua lalu lintas kontainer dikirim ke host virtualisasi tempat kebijakan SDN diterapkan, sehingga mengaktifkan fitur seperti Azure Network Security Groups untuk kontainer.
Topologi jaringan dan IPAM
Tabel di bawah ini menunjukkan bagaimana konektivitas jaringan disediakan untuk koneksi internal (kontainer-ke-kontainer) dan eksternal untuk setiap driver jaringan.
Mode jaringan/driver Docker
Driver Jaringan Docker Windows | Penggunaan umum | Kontainer-ke-kontainer (Simpul tunggal) | Kontainer-ke-eksternal (simpul tunggal + multi-simpul) | Kontainer-ke-kontainer (multi-simpul) |
---|---|---|---|---|
NAT (Default) | Baik untuk Pengembang |
|
Dirutekan melalui Management vNIC (terikat ke WinNAT) | Tidak didukung secara langsung: memerlukan pengeksposan port melalui host |
Transparan | Baik untuk Pengembang atau penyebaran kecil |
|
Dirutekan melalui host kontainer dengan akses langsung ke adaptor jaringan (fisik) | Dirutekan melalui host kontainer dengan akses langsung ke adaptor jaringan (fisik) |
Overlay | Baik untuk multi-simpul; diperlukan untuk Docker Swarm, tersedia di Kubernetes |
|
Tidak didukung secara langsung - memerlukan titik akhir kontainer kedua yang terpasang pada jaringan NAT pada aturan Windows Server 2016 atau VFP NAT pada Windows Server 2019. | Same/Cross Subnet: Lalu lintas jaringan dienkapsulasi menggunakan VXLAN dan dirutekan melalui Mgmt vNIC |
L2Bridge | Digunakan untuk Kubernetes dan Microsoft SDN |
|
Alamat MAC kontainer ditulis ulang pada ingress dan egress |
|
L2Tunnel | Khusus Azure | Same/Cross Subnet: Disematkan rambut ke sakelar virtual Hyper-V host fisik ke tempat kebijakan diterapkan | Lalu lintas harus melalui gateway jaringan virtual Azure | Same/Cross Subnet: Disematkan rambut ke sakelar virtual Hyper-V host fisik ke tempat kebijakan diterapkan |
IPAM
Alamat IP dialokasikan dan ditetapkan secara berbeda untuk setiap driver jaringan. Windows menggunakan Host Networking Service (HNS) untuk menyediakan IPAM untuk driver nat dan bekerja dengan Docker Swarm Mode (KVS internal) untuk menyediakan IPAM untuk overlay. Semua driver jaringan lainnya menggunakan IPAM eksternal.
Mode Jaringan / Driver | IPAM |
---|---|
NAT | Alokasi dan penugasan IP dinamis oleh Host Networking Service (HNS) dari awalan subnet NAT internal |
Transparan | Alokasi IP statis atau dinamis (menggunakan server DHCP eksternal) dan penugasan dari alamat IP dalam awalan jaringan host kontainer |
Overlay | Alokasi IP dinamis dari Docker Engine Swarm Mode mengelola awalan dan penugasan melalui HNS |
L2Bridge | Alokasi dan penugasan IP dinamis oleh Host Networking Service (HNS) dari awalan subnet yang disediakan |
L2Tunnel | Khusus Azure - Alokasi ip dinamis dan penugasan dari plugin |
Penemuan Layanan
Penemuan Layanan hanya didukung untuk driver jaringan Windows tertentu.
Nama driver | Penemuan Layanan Lokal | Penemuan Layanan Global |
---|---|---|
Nat | YA | YA dengan Docker EE |
Overlay | YA | YA dengan Docker EE atau kube-dns |
Transparan | TIDAK | TIDAK |
l2bridge | YA dengan kube-dns | YA dengan kube-dns |