Кіріспе
Операциялық жүйе парадигмасы, бірнеше оқшауланған пайдаланушы кеңістігі инстанцияларын қолдануға мүмкіндік береді. ОЖ деңгейіндегі виртуализация – ядроның бірнеше оқшауланған пайдаланушы кеңістігі инстанцияларының болуына рұқсат беретін операциялық жүйе (ОЖ) виртуализация парадигмасы. Бұл контейнерлер (LXC, Solaris контейнерлері, AIX WPAR, HP UX SRP контейнерлері, Docker, Podman), аймақтар (Solaris контейнерлері), виртуалды жеке серверлер (OpenVZ), бөлімдер, виртуалды орталар (VEs), виртуалды ядролар (DragonFly BSD) немесе түрмелер (FreeBSD түрмесі немесе chroot түрмесі) түрінде болуы мүмкін. Мұндай инстанциялар ішінде жұмыс істейтін бағдарламалар тұрғысынан нақты компьютерлерге ұқсауы мүмкін. Қалыпты операциялық жүйеде жұмыс істейтін компьютерлік бағдарлама сол компьютердің барлық ресурстарын (қосылған құрылғылар, файлдар мен папкалар, желілік ресурстар, процессор қуаты, сандық түрде өлшенетін аппараттық мүмкіндіктер) көре алады. Дегенмен, контейнер ішінде жұмыс істейтін бағдарламалар тек контейнердің ішкі мазмұнын және контейнерге тағайындалған құрылғыларды ғана көреді. Unix сияқты операциялық жүйелерде бұл мүмкіндік стандартты chroot механизмінің жетілдірілген нұсқасы ретінде қарастырылады, ол ағымдағы процесс пен оның туынды процестері үшін көрінетін түбірлік папканы өзгертеді. Оқшаулау механизмдерімен қатар, ядро көбінесе ресурстарды басқару мүмкіндіктерін ұсынады, бұл бір контейнердің қызметінің басқа контейнерлерге тигізетін әсерін шектейді. Linux контейнерлері Linux ядросымен қамтамасыз етілетін виртуализация, оқшаулау және ресурстарды басқару механизмдеріне, атап айтқанда Linux кеңістіктері мен cgroups-қа негізделген. «Контейнер» термині көбінесе ОЖ деңгейіндегі виртуализация жүйелеріне қатысты болғанымен, кейде хост ОЖ-мен әртүрлі деңгейде өзара әрекеттесетін толыққанды виртуалды машиналар ортасын білдіру үшін екіұшты түрде қолданылады, мысалы, Microsoft-тың Hyper-V контейнерлері. Виртуализацияның 1960 жылдан бергі жалпы тарихи шолуын «Виртуализацияның дамуының уақыт жолы» бөлімінен табуға болады.
OS level virtualization is an operating system (OS) virtualization paradigm in which the kernel allows the existence of multiple isolated user space instances, called containers (LXC, Solaris containers, AIX WPARs, HP UX SRP Containers, Docker, Podman), zones (Solaris containers), virtual private servers (OpenVZ), partitions, virtual environments (VEs), virtual kernels (DragonFly BSD), or jails (FreeBSD jail or chroot jail). Such instances may look like real computers from the point of view of programs running in them. A computer program running on an ordinary operating system can see all resources (connected devices, files and folders, network shares, CPU power, quantifiable hardware capabilities) of that computer. However, programs running inside of a container can only see the container's contents and devices assigned to the container. On Unix like operating systems, this feature can be seen as an advanced implementation of the standard chroot mechanism, which changes the apparent root folder for the current running process and its children. In addition to isolation mechanisms, the kernel often provides resource management features to limit the impact of one container's activities on other containers. Linux containers are all based on the virtualization, isolation, and resource management mechanisms provided by the Linux kernel, notably Linux namespaces and cgroups. The term container, while most popularly referring to OS level virtualization systems, is sometimes ambiguously used to refer to fuller virtual machine environments operating in varying degrees of concert with the host OS, e. g., Microsoft's Hyper V containers. A more historic overview of virtualization in general since 1960 can be found in the Timeline of virtualization development.
Қолданылуы
Операциялық жүйе деңгейіндегі виртуализация виртуалды хостинг орталарында кеңінен қолданылады, мұнда ол көптеген бір-біріне сенімсіз пайдаланушылар арасында шектеулі аппараттық ресурстарды қауіпсіз бөлу үшін пайдалы. Жүйе әкімшілері серверлік жабдықты біріктіру үшін де оны пайдалана алады, яғни жеке хосттардағы қызметтерді бір сервердегі контейнерлерге көшіру арқылы. Басқа да кең таралған жағдайларға қауіпсіздікті арттыру, аппараттық тәуелсіздік және қосымша ресурстарды басқару мүмкіндіктері үшін бірнеше бағдарламаны бөлек контейнерлерге оқшаулау кіреді. Дегенмен, chroot механизмін пайдалану арқылы қамтамасыз етілген қауіпсіздіктің күшеюі толыққанды емес. Тірі миграцияға қабілетті операциялық жүйе деңгейіндегі виртуализацияны жүзеге асыру кластердегі түйіндер арасында контейнерлердің жүктемесін динамикалық түрде теңестіру үшін де қолдануға болады.
Жоғары
Операциялық жүйе деңгейіндегі виртуализация, әдетте, толық виртуализацияға қарағанда аз жүктеме тудырады, себебі операциялық жүйе деңгейіндегі виртуалды бөлімдердегі бағдарламалар операциялық жүйенің стандартты жүйелік шақыру интерфейсін пайдаланады және толық виртуализациядағы (мысалы, VMware ESXi, QEMU немесе Hyper V) және паравиртуализациядағы (мысалы, Xen немесе User mode Linux) сияқты эмуляцияға түсуіне немесе аралық виртуалды машинада іске қосылуына қажеттілік жоқ. Осы типтегі виртуализация тиімді жұмыс істеу үшін аппараттық қолдауды талап етпейді.
Икемділік
Операциялық жүйе деңгейіндегі виртуализация басқа виртуализация тәсілдерімен салыстырғанда икемді емес, себебі ол хост операциялық жүйесінен өзге немесе басқа қонақ ядросымен үйлесімді қонақ операциялық жүйені іске қоса алмайды. Мысалы, Linux-та әртүрлі дистрибутивтер жарайды, бірақ Windows сияқты басқа операциялық жүйелерді орнату мүмкін емес. Өзгермелі кіріс жүйелерін пайдаланатын операциялық жүйелер виртуалданған архитектура шектеулеріне тап болады. Бұл қолданбалар ішіндегі бұлтты серверлердің релелік талдауы сияқты бейімделу әдістері, операциялық жүйе деңгейіндегі виртуалды ортаны сақтап тұрады. Solaris жоғарыда айтылған шектеулерді өзінің брендтік аймақтары мүмкіндігі арқылы ішінара жеңеді, ол Solaris 10 хостында ескі Solaris 8 немесе 9 нұсқасын эмуляциялайтын контейнерде ортаны іске қосуға мүмкіндік береді. Linux брендтік аймақтары (lx брендтік аймақтары деп аталады) x86 негізіндегі Solaris жүйелерінде де қолжетімді, олар Linux пайдаланушы кеңістігін және Linux қолданбаларын орындау үшін қолдау көрсетеді; сонымен қатар, Solaris Red Hat Enterprise Linux 3.x немесе CentOS 3.x Linux дистрибутивтерін "lx" аймақтарына орнату үшін қажетті құралдарды ұсынады. Дегенмен, 2010 жылы Linux брендтік аймақтары Solaris-тен алынып тасталды; 2014 жылы олар 32 биттік Linux ядроларын қолдайтын ашық кодты Solaris түйіндігі – Illumos-та қайта енгізілді.
Сақтау
Кейбір іске асырулар файл деңгейінде көшірме жазу (CoW) механизмдерін ұсынады. (Көбінесе, стандартты файл жүйесі бөлімдер арасында ортақ пайдаланылады, ал файлдарды өзгертетін бөлімдер өздерінің жеке көшірмелерін автоматты түрде жасайды.) Бұл, бүкіл жүйелік виртуализаторларда жиі қолданылатын блок деңгейіндегі көшірме жазу схемаларына қарағанда сақтық көшірме жасауды жеңілдетеді, жадты тиімдірек пайдаланады және кэштеуді жеңілдетеді. Дегенмен, бүкіл жүйелік виртуализаторлар түпкілікті емес файл жүйелерімен де жұмыс істей алады және жүйе күйінің толық көшірмелерін жасап, оларды кері қайтара алады.