Docker wcześniej korzystał z LinuX Containers (LXC), ale przełączył się na runC (wcześniej znany jako libcontainer), który działa w tym samym systemie operacyjnym, co jego host. Dzięki temu może współdzielić wiele zasobów systemu operacyjnego hosta. Używa również warstwowych systemów plików takich jak AuFS. Zarządza także tworzeniem sieci dla ciebie.
AuFS to warstwowy system plików, więc możesz mieć część tylko do odczytu i część do zapisu, i scalić je ze sobą. Więc możesz mieć wspólne części systemu operacyjnego jako tylko do odczytu, które są wspólne dla wszystkich twoich kontenerów, a następnie każdy pojemnik powinien mieć własny uchwyt do pisania.
Załóżmy, że masz obraz pojemnika o rozmiarze 1 GB. Jeśli chcesz korzystać z pełnej maszyny wirtualnej, musisz mieć 1 GB x liczbę maszyn wirtualnych, które chcesz. Dzięki LXC i AuFS możesz udostępnić większą część 1 GB, a jeśli masz 1000 kontenerów, możesz mieć tylko nieco ponad 1 GB miejsca na system operacyjny kontenerów, zakładając, że wszystkie działają z tym samym obrazem systemu operacyjnego.
Von, czy mógłbyś bardziej szczegółowo opisać, jak polega on na jądrze hosta, jeśli pobiera własne jądro? – gaurav
@gaurav to * nie * ciągnie własne jądro: opiera się na jądrze już obecnym. – VonC
Voc, ale wiemy, centos, ubuntu ma inne jądro niż jak może polegać na jądrze hosta, jak ubuntu może używać jądra centos – gaurav