Empat mod rangkaian Docker ialah: 1. Mod hos, ditentukan dengan “–net=host”; 2. Mod bekas, ditentukan dengan “–net=container:NAME_or_ID”; -net=none" dinyatakan; 4. Mod jambatan.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, versi docker-1.13.1, komputer Dell G3.
Docker menggunakan penghubung Linux (rujuk "Teknologi Rangkaian Maya Linux") untuk memayakan jambatan kontena Docker (docker0) pada hos Apabila Docker memulakan bekas, ia akan menjadi berdasarkan rangkaian Docker Segmen rangkaian jambatan diberikan kepada bekas alamat IP, dipanggil Container-IP, dan jambatan Docker ialah get laluan lalai untuk setiap bekas. Oleh kerana bekas dalam hos yang sama semuanya disambungkan ke jambatan rangkaian yang sama, bekas boleh berkomunikasi secara langsung melalui Container-IP kontena.
Jambatan Docker dimayakan oleh hos dan bukan peranti rangkaian sebenar Ia tidak boleh ditangani oleh rangkaian luaran, yang juga bermakna rangkaian luaran tidak boleh mengakses bekas melalui Container-IP langsung. Jika kontena ingin diakses dari luar, anda boleh memetakan port kontena ke hos (pemetaan port), iaitu, membolehkannya melalui parameter -p atau -P apabila docker run mencipta bekas dan gunakan [host IP ] apabila mengakses bekas: [Port Kontena] Akses kontena.
Docker网络模式 | 配置 | 说明 |
---|---|---|
host模式 | –net=host | 容器和宿主机共享Network namespace。 |
container模式 | –net=container:NAME_or_ID | 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。 |
none模式 | –net=none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。 |
bridge模式 | –net=bridge | (默认为该模式) |
Jika anda menggunakan mod hos semasa memulakan bekas, bekas itu tidak akan mendapat Ruang Nama Rangkaian bebas, tetapi akan berkongsi Ruang Nama Rangkaian dengan hos. Bekas tidak akan memayakan kad rangkaiannya sendiri, mengkonfigurasi IPnya sendiri, dsb., tetapi menggunakan IP dan port hos. Walau bagaimanapun, aspek lain bekas, seperti sistem fail, senarai proses, dsb., masih diasingkan daripada hos.
Bekas yang menggunakan mod hos boleh terus menggunakan alamat IP hos untuk berkomunikasi dengan dunia luar Port perkhidmatan di dalam bekas juga boleh menggunakan port hos. Kelebihan terbesar hos ialah prestasi rangkaian agak baik, tetapi port yang telah digunakan pada hos docker tidak boleh digunakan lagi, dan pengasingan rangkaian tidak baik.
Mod hos ditunjukkan di bawah:
Mod ini menentukan bekas yang baru dibuat dan An bekas sedia ada berkongsi Ruang Nama Rangkaian, bukan hos. Bekas yang baru dibuat tidak akan membuat kad rangkaiannya sendiri dan mengkonfigurasi IPnya sendiri, tetapi akan berkongsi IP, julat port, dsb. dengan bekas yang ditentukan. Begitu juga, selain daripada rangkaian, kedua-dua bekas itu juga diasingkan dalam aspek lain seperti sistem fail, senarai proses, dll. Proses kedua-dua kontena boleh berkomunikasi melalui peranti kad rangkaian lo.
Rajah mod bekas:
Menggunakan mod tiada, bekas Docker mempunyai Rangkaian sendiri Namespace , bagaimanapun, tidak melakukan sebarang konfigurasi rangkaian untuk bekas Docker. Dengan kata lain, kontena Docker ini tidak mempunyai kad rangkaian, IP, penghalaan dan maklumat lain. Kita perlu menambah kad rangkaian, mengkonfigurasi IP, dsb. pada bekas Docker sendiri.
Dalam mod rangkaian ini, bekas hanya mempunyai rangkaian gelung balik dan tiada kad rangkaian lain. mod tiada boleh ditentukan oleh --network=none semasa mencipta bekas. Rangkaian jenis ini tidak boleh disambungkan ke Internet Rangkaian tertutup boleh memastikan keselamatan bekas.
Tiada gambarajah mod:
Apabila proses Docker bermula, ia akan dibuat pada hos Jambatan maya bernama docker0 bekas Docker yang dimulakan pada hos ini akan disambungkan ke jambatan maya ini. Jambatan maya berfungsi sama dengan suis fizikal, supaya semua bekas pada hos disambungkan ke rangkaian Lapisan 2 melalui suis.
Tetapkan IP daripada subnet docker0 kepada bekas dan tetapkan alamat IP docker0 sebagai get laluan lalai kontena. Buat sepasang peranti pasangan veth kad rangkaian maya pada hos Docker meletakkan satu hujung peranti pasangan veth dalam bekas yang baru dibuat dan namakannya eth0 (kad rangkaian kontena) dan hujung satu lagi dalam hos dengan nama yang serupa. seperti vethxxx Nama dan tambah peranti rangkaian ini pada jambatan docker0. Anda boleh melihatnya melalui arahan brctl show.
Mod jambatan ialah mod rangkaian lalai pekerja pelabuhan Jika anda tidak menulis parameter --net, ia adalah mod jambatan. Apabila menggunakan docker run -p, docker sebenarnya membuat peraturan DNAT dalam iptables untuk melaksanakan fungsi penghantaran port. Anda boleh menggunakan iptables -t nat -vnL untuk melihat.
Mod jambatan ditunjukkan di bawah:
Pembelajaran yang disyorkan: "tutorial video docker"
Atas ialah kandungan terperinci Apakah empat mod rangkaian docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!