Różnice pomiędzy kontenerem a maszyną wirtualną

Na początek warto sobie powtórzyć czym właściwie jest Docker.
Docker jest to program, który służy  tworzenia i zarządzania kontenerami. Tak jak program Virtualbox służy do obsługi maszyn wirtualnych tak Docker służy do obsługi kontenerów.

Kontener przede wszystkim różni się od maszyny wirtualnej tym, że kontenery nie posiadają w sobie całego systemu operacyjne, jak maszyna wirtualna. A korzystają z zasobów jądra systemu hosta gdzie działa silnik dockera (docker engine).

Wirtualizacja vs Konteneryzacja


Ma to swoje plusy, na przykład kontener jest mniejszy od maszyny wirtualnej i może być tak samo szybki jak proces oruchmiany na hoscie.  

Minusem jest natomiast bezpieczeństwo  izolacja procesów kontenera od procesów maszyny gospodarza, dlatego że kontenery korzystają z jądra maszyny gospodarza.

Rózni się też podejście praktyczne w wykorzystaniu. Kiedy maszyna wirtualna mogla zawierać wszystko, limitem tu mógł być tylko miejsce na dysku. Tak kontener jest nastawiony na to by posiadać jedynie to co naprawdę jest potrzebne do zrealizowania jego zadania. Najlepiej tylko jedno główne narzędzie czy aplikację.  Można porównać to do tego że maszyna wirtualna to torba narzędziowa a kontener to młotek


W praktyce wygląda to tak, że jeśli mamy nasza aplikacja, która składa się z webserwera i bazy danych to spokojnie może działać w jednej maszynie wirtualnej. Natomiast w podejściu kontenerowym. To jeden kontener będzie na web server, a drugi na bazę danych.
Im więcej takich składników tym więcej kontenerów. 

Przed dockerem istniały inne programy do obsługi kontenerów jednak dopiero docker zrobił to w bardzo przystępny sposób dla użytkownika (w sensie administratora, dewelopera) i dlatego Docker stał się w pewny sensie synonimem kontenerów. Coś jak kiedyś na każde buty sportowe mówiło się adidasy.   


Jeśli interesujesz się tematem Virtualboxa to zapraszam Cię do kursu Virtualbox w praktyce – tam poznasz szczegółowo wszystkie najważniejsze zagadnienia programu.
Natomiast jeśli chcesz zautomatyzować swoje maszyny wirtualne to kurs Vagrant w praktyce jest dla Ciebie.