Dua teknologi teras: 1. "Ruang nama Linux", yang merupakan sejenis pengkapsulan dan pengasingan sumber sistem global, supaya proses dalam ruang nama yang berbeza mempunyai sumber sistem global bebas 2. "Kumpulan Kawalan", yang boleh Mengasingkan sumber fizikal pada mesin hos dan melaksanakan kuota dan ukuran sumber.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, versi docker-1.13.1, komputer Dell G3.
Docker ialah projek sumber terbuka awan berdasarkan bahasa Go.
Docker menyelesaikan masalah persekitaran pembangunan yang konsisten, persekitaran ujian dan persekitaran pengeluaran melalui teknologi virtualisasi, membolehkan Apl dan persekitaran berjalannya mencapai tujuan "Bina, Hantar dan Jalankan Mana-mana APP, Di Mana-mana". Teknologi virtualisasi kontena yang memudahkan penyepaduan berterusan dan memudahkan pelepasan dan pengembangan keseluruhan.
Dua teknologi teras Docker: Ruang Nama dan Kumpulan Pengawal.
1. Pengasingan: Ruang Nama Linux (ns)
Ruang nama Linux ialah sejenis pengkapsulan dan pengasingan sumber sistem global. Ini membolehkan proses dalam ruang nama yang berbeza mempunyai sumber sistem global yang bebas Mengubah sumber sistem dalam satu ruang nama hanya akan menjejaskan proses dalam ruang nama semasa dan tidak mempunyai kesan pada proses dalam ruang nama lain. Sumber ini termasuk: pokok proses, antara muka rangkaian, titik lekap, komunikasi antara proses dan sumber lain. Proses dalam ruang nama yang sama boleh melihat perubahan satu sama lain dan tidak mengetahui apa-apa tentang proses luaran. Ini boleh memberikan proses dalam bekas itu ilusi bahawa ia berada dalam sistem bebas, sekali gus mencapai tujuan pengasingan.
Setiap contoh pengguna diasingkan antara satu sama lain dan tidak menjejaskan satu sama lain. Kaedah yang diberikan oleh kaedah virtualisasi perkakasan am ialah VM, manakala kaedah yang diberikan oleh LXC ialah bekas, dan untuk lebih spesifik, ia adalah ruang nama kernel. Antaranya, pid, net, ipc, mnt, uts, pengguna dan ruang nama lain Asingkan proses bekas, rangkaian, mesej, sistem fail, UTS ("Sistem Perkongsian Masa UNIX") dan ruang pengguna.
1), ruang nama pid
Proses pengguna yang berbeza diasingkan oleh ruang nama pid dan ruang nama yang berbeza boleh mempunyai pid yang sama. Proses induk bagi semua proses LXC dalam docker ialah proses docker, dan setiap proses lxc mempunyai ruang nama yang berbeza. Pada masa yang sama, kerana bersarang dibenarkan, Docker dalam Docker boleh dilaksanakan dengan mudah.
2), ruang nama bersih
Dengan ruang nama pid, pid dalam setiap ruang nama boleh diasingkan antara satu sama lain, tetapi port rangkaian masih berkongsi port hos. Pengasingan rangkaian dicapai melalui ruang nama bersih Setiap ruang nama bersih mempunyai peranti rangkaian bebas, alamat IP, jadual penghalaan IP dan direktori /proc/net. Dengan cara ini, rangkaian setiap bekas boleh diasingkan. Secara lalai, docker menggunakan veth untuk menyambungkan kad rangkaian maya dalam bekas ke jambatan docker: docker0 pada hos.
3), interaksi proses dalam ruang nama ipc
bekas masih menggunakan kaedah interaksi antara proses Linux biasa (komunikasi antara proses - IPC), termasuk semaphore biasa dan mesej Baris gilir dan ingatan bersama. Walau bagaimanapun, tidak seperti VM, interaksi antara proses bekas sebenarnya adalah interaksi antara proses dengan ruang nama pid yang sama pada hos, jadi maklumat ruang nama perlu ditambah apabila memohon sumber IPC - setiap sumber IPC mempunyai 32 unik -bit ID.
4), ruang nama mnt
adalah serupa dengan chroot, meletakkan proses dalam direktori khusus untuk pelaksanaan. Ruang nama mnt membenarkan proses dalam ruang nama yang berbeza untuk melihat struktur fail yang berbeza, supaya direktori fail yang dilihat oleh proses dalam setiap ruang nama diasingkan. Berbeza daripada chroot, maklumat dalam /proc/mounts bagi bekas dalam setiap ruang nama hanya mengandungi titik pelekap ruang nama.
5), ruang nama uts
Ruang nama UTS ("Sistem Perkongsian Masa UNIX") membenarkan setiap bekas mempunyai nama hos dan nama domain bebas, menjadikannya lebih dipercayai pada rangkaian boleh dianggap sebagai nod bebas dan bukannya proses pada Hos.
6), ruang nama pengguna
Setiap bekas boleh mempunyai id pengguna dan kumpulan yang berbeza, yang bermaksud anda boleh menggunakan pengguna di dalam bekas untuk melaksanakan program bukan pada Hos.
2. Sekatan sumber: Kumpulan Kawalan (cgroup)
Ruang nama mengasingkan sistem fail, rangkaian dan hos untuk proses yang baru dibuat Proses antara mesin diasingkan antara satu sama lain, tetapi ruang nama tidak dapat memberikan kita pengasingan sumber fizikal. Tetapi jika anda menjalankan berbilang bekas pada mesin yang sama yang tidak tahu apa-apa tentang satu sama lain dan mesin hos, bekas ini bersama-sama menduduki sumber fizikal mesin hos.
Kumpulan Kawalan (pendek kata CGroup) dapat mengasingkan sumber fizikal pada mesin hos, seperti CPU, memori, cakera I/O dan lebar jalur rangkaian. Setiap CGroup ialah sekumpulan proses yang dihadkan oleh piawaian dan parameter yang sama Terdapat hubungan hierarki antara kumpulan CG yang berbeza, yang bermaksud bahawa mereka boleh mewarisi beberapa piawaian dan parameter untuk menyekat penggunaan sumber daripada kelas induk mereka.
cgroup melaksanakan kuota dan pengukuran sumber. Penggunaan cgroups adalah sangat mudah Ia menyediakan antara muka seperti fail Cipta folder baharu dalam direktori /cgroup untuk mencipta fail tugasan baharu dalam folder ini dan tulis pid untuk merealisasikan proses tersebut kawalan sumber. kumpulan boleh mengehadkan sumber sembilan subsistem blkio, cpu, cpuacct, cpuset, peranti, penyejuk beku, memori, net_cls dan ns Berikut ialah penerangan terperinci bagi setiap subsistem:
tutorial video buruh pelabuhan"
Atas ialah kandungan terperinci Apakah dua teknologi teras docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!