Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



25.02.2020

Koszty w górę

Zmiany w licencjach VMware
24.02.2020

VPN na nowo

WireGuard w Linuksie
24.02.2020

Wydajność pod kontrolą

Citrix Analytics for Performance
24.02.2020

Zaawansowany backup

Veeam Availability Suite v10
20.02.2020

Serwery Enterprise

OVHCloud stawia na Ryzeny
20.02.2020

Monitory dla biznesu

Newline IP
20.02.2020

Przemysłowe SSD

Dyski Transcend M.2 NVMe
23.01.2020

Google Project Zero

Inicjatywa Google Project Zero
23.01.2020

Ochrona tylko w chmurze

Kaspersky Security Cloud Free

Kontenery i wirtualizacja

Data publikacji: 21-04-2015 Autor: Grzegorz Kuczyński

Wszystko wskazuje na to, że na naszych oczach rodzi się nowy standard technologii wirtualizacyjnej do dystrybucji oprogramowania. Deweloperzy, optymalizując obecnie wdrażane rozwiązania, wskrzesili najstarszą formę wirtualizacji – kontenery, a jednym z najprężniej rozwijających się projektów w ekosystemie GNU/Linux jest Docker, który definiuje pojęcie kontenerów na nowo.

Kontenery w systemie Linux istniały od dawna, a dostępna różnorodność implementacji jest bardzo zadowalająca. Niemal każdemu administratorowi systemów GNU/Linux znane są takie rozwiązania jak LXC, OpenVZ czy Linux-VServer. Dużą popularnością cieszą się również kontenery w innych systemach Uniksowych, takie jak Jali w FreeBSD czy Solaris Zones. Powstaje zatem pytanie, co takiego jest w technologii Docker, że udało się jej zdobyć tak dużą popularność i aspirować do międzyplatformowego standardu. W artykule przyjrzymy się możliwościom Dockera i tym samym postaramy się odpowiedzieć na pytanie, na czym polega jego fenomen.

Część funkcji Dockera dedykowana jest dla rozwiązań wdrażanych na wielką skalę, inne przydadzą się w przypadku pojedynczej instancji kontenera. Zanim jednak zaczniemy je omawiać, warto wspomnieć o technologiach, dzięki którym rozwiązanie powstało. Jest to istotne m.in. dlatego, że bez nich nie uruchomimy kontenerów Dockera.

> KERNEL NAMESPACES

Pierwszy raz mechanizm namespaces pojawił się w jądrze systemu Linux, oznaczonym numerem 3.8, w 2013 roku. Jednocześnie jest to minimalna wersja jądra wymagana przez Dockera. Rozwiązanie zaimplementowano w celu lepszej obsługi kontenerów, a jego celem jest kompleksowa separacja zasobów systemowych. Zasoby te zostały podzielone na sześć bazowych komponentów: pid, net, ipc, mnt, uts, user:

 

  • pid – zapewnia separację procesów w systemie, każda przestrzeń PID posiada swój własny proces nr 1 (np. init lub systemd);
  • net – zapewnia separację dla interfejsów sieciowych, każda przestrzeń posiada swój własny interfejs;
  • ipc – zapewnia separację komunikacji międzyprocesowej i dzielenia zasobów za pomocą takich mechanizmów jak semafory;
  • mnt – zapewnia separację głównego systemu plików, zasób zamontowany do jednej przestrzeni nazw jest niedostępny dla innych przestrzeni nazw;
  • uts – zapewnia separację dla nazwy hosta i domeny, pozwala na oddzielne ustawianie tych nazw dla wszystkich procesów w przestrzeni nazw. Nazwa UTS wywodzi się od struktury używanej przez systemową funkcję uname();
  • user – zapewnia izolację ID użytkownika i grupy pomiędzy przestrzeniami nazw, ten sam użytkownik może być użytkownikiem nieuprzywilejowanym na hoście głównym i uprzywilejowanym (ID 0) w jednej z przestrzeni nazw.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"