Pojawiło się pytanie, ponieważ przedstawiałem zespołowi Docker prezentację, na którą nie wiedziałem, jak odpowiedzieć.Aplikacje "dokowane" często są budowane na wierzchu kontenerów OS. Dlaczego to nie jest celem?
Wiele wstępnie skonstruowanych pojemników na Docker Hub, na przykład kontenera jboss/wildfly, zbudowano na wierzchu kontenerów dla określonego systemu operacyjnego (Ubuntu, CentOS itp.). Niektóre z tych kontenerów w rzeczywistości nie są niczym innym jak kontenerami dla tych systemów.
Jednak główną racją bytu Docker, to jest prime claim to fame, podstawą twierdzenia, że jest ono lepsze niż technologie maszyn wirtualnych, jest to, że jest on lżejszy, ponieważ nie musi być zbudowany na systemie operacyjnym. Ale jeśli tak jest i większość kontenerów zawiera system operacyjny, czy nie oznacza to zniszczenia celu i unieważnienia roszczenia?
Co zatem jest w tych obrazach OS Docker i jak można jeszcze twierdzić, że jest lżejszy? Czy to trochę obnażona wersja systemu operacyjnego?
Czy można wykonać obraz dokowania, który nie jest zbudowany na systemie operacyjnym? Co decyduje o tym, kiedy aplikacja pobiera usługi OS z systemu operacyjnego osadzonego w kontenerze, w przeciwieństwie do pobierania usług systemu operacyjnego z hosta?
O ile rozumiem, Docker daje prędkość zbliżoną do natywnej, ponieważ nie wymaga emulacji, wykorzystuje część samego jądra Linux. Wadą jest to, że kontener nie jest tak przenośny, ponieważ nie może już emulować kodu. Docker używa LXC. Połączone kontenery są kompatybilne z innymi systemami operacyjnymi, podstawowe kontenery są bardziej elastyczne w przypadku niestandardowego oprogramowania. – exussum
Myślę, że "lekkie" twierdzenie Dockera należy rozumieć pod kątem wydajności. I rzeczywiście, pojemniki działają szybciej niż zwykłe maszyny wirtualne, ponieważ nie muszą emulować takich rzeczy jak sprzęt czy jądro. –