Konteneryzacja, wirtualizacja, emulacja i symulacja to pojęcia mające ze sobą dużo wspólnego, jednak warto je uporządkować i rozróżniać. Dlatego w tym artykule przedstawiam Ci ich czytelne zestawienie wraz z przykładami.
Symulacja
Symulacja polega na imitacji działania oprogramowania lub urządzenia na poziomie systemu operacyjnego hosta, którego architektura sprzętowa jest zgodna z symulowanym środowiskiem.
Np. Uruchomienie symulatora tabletu na PC w systemie Windows.
Emulacja
Emulacja polega na logicznym symulowaniu działania oprogramowania lub urządzenia na poziomie systemu operacyjnego hosta, którego architektura sprzętowa nie jest zgodna z symulowanym środowiskiem.
Np. Uruchomienie emulatora PlayStation 2 na PC.
Wirtualizacja
Wirtualizacja polega na symulowaniu istnienia zasobów logicznych przydzielając zasoby fizyczne. Pozwala na wydzielenie odizolowanego obszaru pamięci, zasobów od hosta i stworzenie na wydzielonym systemie operacyjnym (hosta) miejsca, gdzie będzie znajdował się niezależny od hosta system operacyjny z własnym systemem plików wraz z bibliotekami i aplikacjami.
Przykładem jest wykorzystanie narzędzia VirtualBox, które pozwala uruchomić obraz systemu operacyjnego w ramach innego. Środowiska te są zupełnie od siebie niezależne.
Zalety
- W pełni symuluje działanie fizycznego sprzętu;
- jest niezależna od systemu operacyjnego hosta;
- odizolowuje od systemu operacyjnego hosta;
- obraz jest przenośny między środowiskami.
Wady
- Wirtualizacja zużywa dużą część zasobów sprzętowych;
- trudna do realizacji komunikacja między maszynami wirtualnymi.
Konteneryzacja
Konteneryzacja to lekka forma działająca w obrębie jednego jadra systemu (Linux w przypadku Docker’a). Kontenery z racji mniejszych rozmiarów są bardziej przenośne. Docker zapewnia proste metody komunikacji między kontenerami. Każdy kontener zawiera swój zestaw bibliotek i aplikacji w dowolnym środowisku, swój obszar pamięci, adres IP i listę procesów. System operacyjny jest współdzielony z hostem.
Zalety wykorzystywania kontenerów:
- zawierają tylko niezbędne zasoby (pliki, biblioteki, narzędzia)
- są uruchomiane bardzo szybko w porównaniu do wirtualnej maszyny;
- mogą się komunikować między sobą po odpowiednią ustawionym wydzielonym połączeniu.
Wady
- Zależne od systemu operacyjnego;
- kontenery nie są tak dobrze odizolowane jak w przypadki wirtualizacji, ponieważ zależą od systemu operacyjnego hosta.
Konteneryzacja czy wirtualizacja? Podsumowanie
Podsumowując mechanizm konteneryzacji wykorzystywany przez Docker pozwala na tworzenie małych przenośnych środowisk. Ze względu na ich lekkość bez trudu można je współdzielić. Niestety kontenery są uzależnione od systemu operacyjnego (gdzie bazą jest jądro systemu Linux). Jednak twórcy rozwiązania pracują, aby korzystanie było możliwe na każdym systemie operacyjnym takie samo.