Czemu każdy programista musi znać Dockera.

Docker logo

Konteneryzacja jest dzisiaj czymś, bez czego ciężko wyobrazić sobie proces rozwoju nowoczesnych aplikacji. Docker, wraz z innymi technologiami zrewolucjonizował sposób w jaki budujemy i wdrażamy aplikacje. W praktyce zauważyłem, że wiele projektów nie używa konteneryzacji, nawet jeśli rozwiązała by masę problemów w systemie. Postaram się rozwinąć ten temat i mam nadzieję przekonać pewną ilość osób do spróbowania tych technologii.

Czym jest docker?

Docker jest technologią konteneryzacji aplikacji, która pozwala na bardzo proste i wydajne tworzenie kontenerów z aplikacjami. Wydajność osiągana jest głównie przez to, że wszystkie kontenery dockerowe używają tego samego systemu operacyjnego i tylko warstwa aplikacji musi być wirtualizowana. Dostajemy w nim też pakiet narzędzi które w bardzo prosty sposób pozwalają na zarządzanie kontenerami.

Po co w ogóle nam wirtualizacja?

Żeby zrozumieć na czym polega rewolucyjność kontenerów powinniśmy najpierw wiedzieć dlaczego tworzymy środowiska wirtualne. Podczas rozwoju aplikacji stoi przed nami wiele powtarzalnych problemów. Niektóre z nich mogą być rozwiązane wirtualizacją. Postaram się wymienić najważniejsze.

Powtarzalność ustawień systemu operacyjnego.

Nie chcemy mieć różnic pomiędzy różnymi komputerami, które uruchamiają aplikację. Nie jesteśmy w stanie kontrolować wszystkich parametrów środowiska na którym uruchamiamy nasz system i subtelne różnicę mogą produkować nieoczekiwane wyniki.

Problem serwisów pomocniczych.

Każdy kto musiał zainstalować multum różnych baz danych, serwerów aplikacyjnych, czy brokerów do JMS wie dokładnie o co chodzi. Instalując i uruchamiając narzędzia bezpośrednio na naszym systemie prosimy się o kłopoty. Musimy być pewni wersji oprogramowania, jego konfiguracji i musimy je naprawiać/przeinstalowywać jak dojdzie do jakiegoś problemu.

Wygoda używania i wydajność.

Aplikacje spakowane na dane wirtualne środowisko są banalne w uruchomieniu i zarządzaniu. Ich cykl startu/stopu jest zwykle znacznie prostszy i szybszy niż w przypadku tradycyjnych aplikacji. W każdej chwili możemy je zniszczyć i postawić ponownie, czy zmienić ich wersję. Jest to ogromna różnica w wygodzie i elastyczności.

Izolacja i bezpieczeństwo.

Izolacja wirtualnego środowiska zapewnia znacznie większe bezpieczeństwo i nie niesie za sobą zagrożenia przypadkowych zmian na systemie operacyjnym. Tradycyjne aplikację często zostawiają po sobie śmieci, czy potrafią instalować dodatkowe biblioteki. Dzięki wyizolowaniu aplikacji od głównego systemu nie musimy martwić się tymi zagrożeniami.

Dlaczego containery są lepsze od maszyn wirtualnych?

W przeszłości w celu rozwiązania powyższych problemów stosowane były maszyny wirtualne. Było to rozwiązanie, które dawało rezultaty, jednak miało swoje ogromne problemy:

  • rozmiar zajmowany przez maszyny liczony w GB
  • powolny start/stop
  • duża ilość zajmowanej pamięci RAM
  • skomplikowany proces tworzenia samej maszyny

Docker w służbie programisty.

Docker rozwiązuje wszystkie wymienione powyżej problemy. Co więcej dostajemy ogromną ilość gotowych obrazów aplikacji, stworzonych przez społeczność dockera. Jestem pewny, że użycie tej technologii jest w stanie polepszyć stan praktycznie każdego projektu.

Leave A Comment