Właśnie zacząłem studiować Dockera i jest coś, co jest dla mnie dość mylące. Jak czytałem na stronie Dockera, pojemnik różni się od maszyny wirtualnej. Zrozumiałem, że kontener to tylko piaskownica, w której działa cały izolowany system plików.
Przeczytałem również, że w kontenerze nie jest zainstalowany system operacyjny gościa. Zamiast tego opiera się na jądrze systemu operacyjnego.
Wszystko w porządku. Jestem zdezorientowany, że istnieją obrazy Docker nazwane na cześć systemów operacyjnych. Widzimy obrazy takie jak Ubuntu, Debian, Fedora, CentOS i tak dalej.
Chodzi mi o to: czym tak naprawdę są te obrazy? Czym różni się tworzenie kontenera na podstawie obrazu Debiana od tworzenia maszyny wirtualnej i instalowania Debiana?
Myślałem, że w kontenerach nie ma zainstalowanego systemu operacyjnego gościa, ale podczas tworzenia obrazów opieramy je na obrazie nazwanym na podstawie jednego systemu operacyjnego.
Ponadto w przykładach, które widziałem, kiedy to robimy docker run ubuntu echo "hello world"
, wydaje się, że uruchamiamy maszynę Wirtualną za pomocą Ubuntu i uruchamiamy polecenie echo "hello world"
.
W ten sam sposób, kiedy to robimy docker run -it ubuntu /bin/bash
, wydaje się, że uruchamiamy maszynę wirtualną z Ubuntu i uzyskujemy do niej dostęp za pomocą wiersza poleceń.
W każdym razie, o co chodzi z tymi obrazami po systemach operacyjnych? Czym różni się uruchamianie kontenera z jednym z tych obrazów i rozwijanie maszyny wirtualnej z odpowiednim systemem operacyjnym gościa?
Pomysł polega na tym, że po prostu udostępniamy jądro systemowi operacyjnemu hosta (w konsekwencji mamy dostęp do podstawowych zasobów sprzętowych komputera, bez potrzeby wirtualizacji sprzętu), ale nadal używamy plików i plików binarnych każdego innego systemu w kontenerach w celu do obsługi dowolnej aplikacji, którą chcemy uruchomić?