Dalam docker, terdapat empat mod rangkaian, iaitu bekas mod hos berkongsi IP hos dan nombor port, mod kontena berkongsi alamat IP kontena dan port, tiada bekas mod tidak mempunyai kad rangkaian dan maklumat lain, mod jambatan Bekas boleh berkomunikasi antara satu sama lain secara langsung.
Persekitaran pengendalian tutorial ini: sistem linux7.3, 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 dan apabila Docker memulakan bekas Alamat IP, dipanggil Container-IP, diberikan kepada bekas berdasarkan segmen rangkaian jambatan Docker Pada masa yang sama, jambatan Docker ialah pintu masuk lalai bagi 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.
Empat jenis mod rangkaian
mod hos
Jika anda menggunakan mod hos semasa memulakan bekas, maka ini Bekas itu tidak akan mendapat Ruang Nama Rangkaian bebas, tetapi akan berkongsi Ruang Nama Rangkaian yang sama 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 bekas
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:
mod tiada
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:
mod jambatan
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 Docker mempunyai beberapa mod rangkaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!