Słowo kontener odnosi się do lekkiej technologii wirtualizacji dostępnej w nowoczesnych jądrach Linuksa, która jest bardzo podobna do więzień FreeBSD.
Starsze jądro Linuksa, które nie obsługuje kontenerów, może uruchamiać procesy jednocześnie. Niektóre atrybuty systemu są prywatne do przetworzenia, takie jak środowisko procesu lub pamięć procesu: tylko proces będący właścicielem tych atrybutów i sam system operacyjny mają dostęp do tych danych. (Istnieje wiele luk, takich jak niektóre implementacje ps , ale to w gruncie rzeczy prawda!) Niektóre inne atrybuty są wspólne dla procesów, na przykład system plików i interfejsy sieciowe.
Nowoczesne jądro Linuksa z obsługą kontenerów jest w stanie obsłużyć więcej atrybutów systemu jako prywatne dane powiązane z procesem lub grupą procesów. Wynikowym kontekstem jest kontener i zamiast uruchamiać program w „początkowych kontenerach” przy użyciu systemu plików i interfejsów sieciowych zainicjowanych przez system operacyjny, możliwe jest uruchamianie procesów w innych kontenerach, tak aby widzieli inny system plików i inna lista interfejsów sieciowych. Dlatego dwa procesy uruchomione w odrębnych kontenerach naprawdę współużytkują jądro. Być może znasz komendę chroot, która może uruchomić proces w odrębnej hierarchii plików, kontenery posuwają się o krok dalej.
Oczywiście jest to tylko bardzo zgrubne wytłumaczenie, ale mam nadzieję, że pomoże wyjaśnić, czym są pojemniki. Do czego są dobre?
Popularny interfejs do możliwości kontenerowych jądra Linux jest implementowany przez docker, narzędzie wiersza poleceń, które może być używane do tworzenia artefaktów reprezentujących systemy plików ( obrazy dokerów ) i uruchamiania procesów w kontenerach, w których te systemy plików są dostępne. Ten pakiet oprogramowania umożliwia także tworzenie wirtualnych systemów sieciowych ad hoc, umożliwiających komunikację kilku kontenerom w sieci prywatnej.
Technologie kontenerowe są wygodne do:
- Opisz skalowalne złożone wdrożenia.
- Zapewnij programistom aplikacji środowisko bardzo podobne do środowiska produkcyjnego.
- Zaimplementuj niezmienny wzorzec serwera, ponieważ artefakty oprogramowania zazwyczaj opisują pełny system operacyjny, a nie tylko pakiet aplikacji.
(Jak się wydaje, że znasz inne technologie wirtualizacji, takie jak Virtual Box, możesz zauważyć, że technologie te mogą również wygodnie zająć się trzema powyższymi punktami. Obecnie istnieje dość małe spektrum technologii wirtualizacji i możemy porównać pytanie o ich popularność w pewne konteksty z popularnością języków komputerowych: zależy to prawdopodobnie od zalet technicznych każdego rozwiązania, ale także od wielu czynników, które po prostu określę jako „przypadek”).