Dlaczego warto używać Dockera?

Docker został oficjalnie udostępniony publicznie w 2013 roku, ale funkcjonował już dużo wcześniej jako jeden z wewnętrznych projektów firmy dotCloud. Dziś wiele osób nie wyobraża sobie pracy bez tej open source’owej platformy dla programistów i administratorów.

Docker to tak naprawdę zbiór bardzo funkcjonalnych narzędzi, który pozwala na uruchamianie wielu różnych procesów w tzw. kontenerach (o tej technologii pisaliśmy szerzej w artykule „IT w 2017. Co Nas czeka?”), czyli w odizolowanych środowiskach. To coraz popularniejsze rozwiązanie, które bardzo często można znaleźć na przykład w chmurze.

Docker może z powodzeniem zastąpić wirtualną maszynę i rozwiązania takie jak XEN czy VMware. Wygoda jego użytkowania wynika również z tego, że kontener pozwala na uruchomienie aplikacji w sposób wręcz banalny, bez żadnego emulowania warstwy sprzętowej, bez systemu operacyjnego.
 

Proces zamknięty w kontenerze

Uruchomienie aplikacji w sposób opisany powyżej jest możliwe, ponieważ Docker pozwala na funkcjonowanie samego procesu aplikacji. W ten sposób można inicjować działanie dowolnej liczby procesów w różnych kontenerach, a każdy z nich posiada przydzielony specjalnie dla niego obszar pamięci, własny adres prywatny IP i interfejs oraz ma własny obszar na dysku, gdzie wcześniej zainstalowano obraz systemu operacyjnego i wszystkich bibliotek, które konieczne są do uruchomienia aplikacji. Ważne jest także to, że każdy z tych kontenerów działa zupełnie niezależnie, ale możemy również tworzyć między nimi połączenia sieciowe. Warto jednak pamiętać, że Docker działa pod kontrolą GNU/Linux, natomiast użytkownicy Windows lub Mac muszą skorzystać z menedżera maszyn wirtualnych VirtualBox (tutaj najlepiej użyć wersji Docker Toolbox). Inne rozwiązanie to używanie maszyny wirtualnej z preinstalowanym Dockerem. To oferuje już coraz więcej dostawców cloud computing (np. Azure, Amazon AWS itd.).
 

Wszystko to oczywiście super, wygląda świetnie, ale sceptyczny programista może zapytać: gdzie tu dla mnie korzyść? Dockera warto używać co najmniej z dwóch ważnych powodów.
 

Budowanie środowiska deweloperskiego

Docker bardzo ułatwia budowanie środowiska deweloperskiego. Oczywiście, że można sobie poradzić z tym bez Dockera. Oczywiście, że można użyć do tego na przykład Vagranta. Tylko po co? Koderzy, którzy wcześniej musieli radzić sobie z budowaniem swojego środowiska deweloperskiego, zanim nastała era Dockera, doskonale wiedzą, o czym mowa. Gdy brali udział w wielu różnych projektach, na jednym „biednym” laptopie musieli instalować różne bazy danych, dodatkowe usługi itp., a nawet używając Vagranta, musieli sami pisać różne skrypty, instalujące wszystkie potrzebne zależności. Ów „biedny” laptop nie zawsze to wytrzymywał. Aby udźwignąć wszystkie te środowiska, konieczny był naprawdę mocny sprzęt.

Gdy używamy Dockera, ten problem odpada, można poradzić sobie bez wirtualizacji. Często również niepotrzebne jest instalowanie oprogramowania. Wszystko dlatego, że można znaleźć w repozytorium obrazy zainstalowanych systemów, baz danych, aplikacji itp. Nawet jeśli czegoś tam brakuje, można zbudować własny obraz według potrzeby. Takie gotowe obrazy zawierają już zainstalowane kontenery i usługi.
 

Dystrybucja aplikacji

Docker jest tak sprytny, że pozwala wykorzystać obrazy nie tylko do łatwego tworzenia środowiska deweloperskiego. Można to narzędzie użyć także do dystrybucji aplikacji. O ile w przypadku instalacji na serwerze, administrator lub użytkownik aplikacji musi sam poradzić sobie z tym procesem i ze wszystkimi związanymi z tym aspektami (np. inaczej instaluje się oprogramowanie w Javie i inaczej w Pythonie lub Ruby), o tyle wykorzystanie Dockera ułatwia całą sprawę.

Programista może łatwo przygotować paczkę dystrybucyjną. Wystarczy, że wykona obraz kontenera z aplikacją, która została ukończona. Już nie administrator czy użytkownik dokonuje instalacji, ale deweloper. Natomiast ci pierwsi dostają kontener, który jest gotowy do uruchomienia i nie muszą zastanawiać się, jaka to technologia, jak ją zainstalować i czy posiadają do tego odpowiednią wiedzę.
 

Jaka jest Wasza opinia na temat Dockera? Korzystacie z niego? A może dopiero zamierzacie wypróbować to narzędzie? Czekamy na wasze komentarze.