2015-05-22 13 views
15

Niedawno wdrożyłem małą aplikację Haskell z dockerem, używając "scratch-haskell" jako obrazu bazowego.Docker Container w porównaniu z Unikernelem

Potem czytałem o Unikernels i HALVM. I trochę się zdezorientowałem.

Mój kontener dokera ma około 6 MB. Unikernel (z tą samą aplikacją haskell) byłby mniej więcej tej samej wielkości, jak sądzę.

Unikernel działa bezpośrednio na hipernadzorcy Xen, podczas gdy obraz dokowania (lub ogólny LXC) działa na normalnej dystrybucji Linuksa, która działa na gołym metalu.

Teraz mam "wybór" uruchamiania systemu Linux z wieloma minimalnymi kontenerami lub maszyną Xen z wieloma małymi Unikernelami.

Jakie są zalety i wady tych dwóch rozwiązań? Czy jeden jest bezpieczniejszy od drugiego? Czy są między nimi znaczące różnice w wydajności?

+1

unikernel będąc całkiem niedawno, myślę, należy uruchomić własne testy – user2915097

Odpowiedz

10

z http://wiki.xenproject.org/wiki/Unikernels

Czego Unikernels podać?

Unikernele zwykle generują pojedyncze środowisko uruchomieniowe, które umożliwia włączanie pojedynczych aplikacji zbudowanych wyłącznie w tym środowisku. Zasadniczo w środowisku tym nie ma możliwości odradzania podprocesów, wykonywanie komend powłoki, tworzenie wielu wątków lub procesów fork. Zamiast tego zapewniają one czystą inkarnację języka wykonawczego skierowaną, czy to OCaml, Haskell, Java, Erlang, lub inne środowisko .

Unikernels Versus Linux Kontenery

wiele zostało wykonane niedawno z zalet Linuksa Container rozwiązań ponad tradycyjnych maszyn wirtualnych. Mówi się, że dzięki ich niewielkiemu rozmiarowi pamięci, szybkiemu uruchamianiu i łatwemu w obsłudze pakietowipojemniki stają się przyszłością wirtualizacji. Chociaż te aspekty pojemników są z pewnością godne uwagi, nie oznaczają one końca świata hiperwizora. W rzeczywistości Unikernels może zmniejszyć długoterminową użyteczność pojemników.

Unikernele ułatwiają korzystanie z tych samych pożądanych atrybutów opisanych przez dla orędowników kontenerów, z dodaniem absolutnie wspaniałej historii bezpieczeństwa, którą można porównać z kilkoma innymi rozwiązaniami.

Więc jeśli chcesz po prostu uruchomić Haskell Unikernels aplikacyjne mogą pracować dla Ciebie, i powinny one mieć nawet mniej zasobów niż dokowanym (i doker koszt jest bardzo mały i tak), ale jeśli aplikacja będzie potrzebować przygotowanego środowiska, konieczność komunikowanie się z oprogramowaniem do dokowania innym niż oprogramowanie Unikernels to lepszy wybór. Sądzę, że jest za wcześnie, by powiedzieć, że Unikernels będzie użyteczny lub powszechny, a jedynie czas pokaże.

+0

choć nie są unikernels coraz mocniejszy w miarę upływu czasu? pod względem zdobywania gwintowania/rozwidlania i dostępu do magazynu itp. Widzę potencjał do pewnego zbieżności ... –

+1

Nawlekanie i rozwidlanie są sprzeczne z definicją unikernela. – bahamat

2

Unikernale świetnie nadają się na rzeczy, które są bezpaństwowcami. Gdy zaczynasz wymagać dostępu do dysku, lepiej jest korzystać z Dockera.

Dlatego wszystkie aplikacje "zabójca" dla niestandardowych są statycznie skonfigurowanymi jądrami, takimi jak statyczne strony internetowe lub stosy sieci zdefiniowane programowo.

+2

Jestem prawie pewny, że w razie potrzeby można ustawić stanowy. Być może nie ujawniając jakiegoś dysku I/O, ale istnieją inne środki do trwałości. –

2

Istnieje wiele dobrych explations Herezje proste:

Unikernel są maszyny wirtualne, ale wyspecjalizowane i zoptymalizowane pod kątem konkretnego zastosowania.

enter image description here

+1

Tutaj tęsknimy za dokiem na doku na gołym metalu bez hiperwizora/bez maszyn wirtualnych – bodrin

+0

Ładnie zilustrowane, ale proszę o listę referencji. – securecurve

Powiązane problemy