Architektura oprogramowania

Docker – konteneryzacja, wirtualizacja, emulacja i symulacja

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

  • Kontenery zawierają tylko niezbędne zasoby (pliki, biblioteki, narzędzia)
  • kontenery są uruchomiane bardzo szybko w porównaniu do wirtualnej maszyny;
  • kontenery mogą się komunikować między sobą po odpowiednią ustawionym wydzielonym polaczeniu.

Wady

  • Zależne od systemu operacyjnego;
  • kontenery nie są tak dobrze odizolowane jak w przypadki wirtualizacji, ponieważ zależą od systemu operacyjnego hosta.

Podsumowanie

Mechanizm konteneryzacji wykorzystywany przez Docker’a 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.

 

 

 

 

Tags:
Show Buttons
Hide Buttons