Podstawowa znajomość Dockera

By Weronika Skotnicka

Docker to popularna technologia kontenerowa. Jako programista prawdopodobnie o nim słyszałeś lub z niego korzystałeś. Wiele osób może myśleć o Dockerze jako o lekkiej maszynie wirtualnej. Ale Docker i maszyna wirtualna (VM) to dwie różne technologie wirtualizacji komputerów. Wiele osób myśli, że w przypadku maszyn wirtualnych po co używać Dockera?

Jeśli się nad tym zastanowić, w „starożytnych” czasach przed wirtualizacją obliczeniową, jakie byłyby typowe kroki, gdybyśmy mieli wdrożyć aplikację?

Pierwszym krokiem jest z pewnością przygotowanie serwera fizycznego, a następnie zainstalowanie systemu operacyjnego na serwerze fizycznym. Gdy mamy już system operacyjny, instalujemy i uruchamiamy naszą aplikację w systemie operacyjnym,

Jednak to wdrożenie było bardzo powolne. Ponieważ musieliśmy przygotować serwery sprzętowe i zainstalować system operacyjny. Następnie wdrażaj aplikacje, które mają wiele zależności od oprogramowania. Proces jest nie tylko powolny, ale także bardzo wysoki. Głównie dlatego, że koszt fizycznego urządzenia jest tak wysoki, że nawet proste wdrożenie aplikacji wymaga serwera. Jeśli aplikacja jest zbyt prosta, marnuje również zasoby sprzętowe.

Jedynym sposobem rozwiązania tych problemów jest wirtualizacja,

Zalety maszyn wirtualnych

Zasoby można przydzielić do różnych maszyn wirtualnych, aby zmaksymalizować wykorzystanie zasobów sprzętowych.

Maszyny wirtualne są łatwiejsze do skalowania aplikacji niż wdrażanie ich bezpośrednio na maszynie fizycznej.

Usługi w chmurze: Wirtualizuj różne zasoby fizyczne za pomocą maszyny wirtualnej, możesz szybko budować usługi w chmurze.

Wady maszyn wirtualnych

Słabością maszyn wirtualnych jest zużycie fizycznych zasobów serwera. Kiedy tworzymy maszynę wirtualną na fizycznym serwerze, musimy wirtualizować zestaw sprzętu. I uruchom na nim pełny system operacyjny. Każda maszyna wirtualna zajmuje dużo zasobów serwera. Co to jest Docker?

W porównaniu z nieporęczną maszyną wirtualną, Docker jest lżejszy. Nie zajmuje więc zbyt dużo zasobów systemowych.

Docker jest rozwijany w popularnym obecnie języku Golang. Jego rdzeniem technicznym jest Cgroup jądra Linux, przestrzeń nazw, Union FS klasy AUFS i inne technologie. Są to technologie, które od wielu lat znajdują się w jądrze Linuksa. Nie jest to więc technologia całkowicie innowacyjna. Docker hermetyzuje i izoluje proces Linuksa za pomocą tych podstawowych technologii Linuksa. Proces izolowany jest również znany jako kontener, który jest całkowicie niezależny od procesu hosta.

Dlatego Docker jest implementacją technologii kontenerowej. I rodzaj wirtualizacji na poziomie systemu operacyjnego. To zupełnie inna maszyna niż maszyna wirtualna, która instaluje system operacyjny za pomocą zestawu sprzętu.

Docker to izolacja na poziomie procesu systemu operacyjnego. Natomiast maszyna wirtualna to izolacja na poziomie zasobów fizycznych, które są zupełnie inne. Możemy również zrozumieć fundamentalną różnicę między tymi dwoma przez porównanie.