Przejdź do głównej zawartości

Docker - Świat kontenerów - Wprowadzenie


Docker wg definicji encyklopedycznej to otwarte oprogramowanie służące jako "platforma dla programistów i administratorów" do tworzenia , wdrażania i uruchamiania aplikacji rozproszonych. Pomysł na konteneryzacje czy jak kto woli na możliwość wyodrębnienia aplikacji w osobnej przestrzeni nie jest niczym nowym. Pierwsze kroki stawiała w tym temacie firma Softricity prezentując produkt Solaris Zones dostępny wraz z 10 wersją systemu Solaris. Kontenery swoją obecność zaznaczyły również w środowiskach Linux (LXC) jednak obsługa tego rodzaju konteneryzacji nie była ani intuicyjna ani wygodna stąd też nie popularna.


Popularność zdobyły natomiast rozwiązania wirtualizacyjne - chmurowe (Cloud). Aplikacje serwowane z maszyny wirtualnej działają na danym systemie operacyjnym i/lub serwerze aplikacyjnym stanowiąc jednolite środowisko zależnych od siebie powiązań. Podejście to powoduje, że oddzielne aplikacje na oddzielnych maszynach z systemami operacyjnymi i innymi zależnościami  wymagają dość dużo zasobów. Z tego powodu środowisko developerskie podjęło się stworzenia efektowniejszego rozwiązania. Problem ten dotyczy również dużych graczy takich jak Google, Microsoft, Amazon w dołożenie się do rozwoju technologii oferowanej przez Docker.

W przypadku podejścia kontenerowego nie jest wymagane by każda aplikacja musiała posiadać dla siebie własny system operacyjny ale jednocześnie zachowuje swoją odrębność w postaci własnej przestrzeni nazw, własnego systemu plików, ma możliwość regulować ilość zarezerwowanych zasobów dla każdego kontenera niezależnie od siebie. Zapewniona jest również izolacja procesów per kontener. Dany kontener zawiera wszystkie składniki danej aplikacji potrzebne do jej działania. Aktualizacja kontenerów odbywa się przez aktualizowanie ich w formie obrazów. 

Docker łączy standaryzowany format pakietów z prostotą użycia co zaowocowało tym, że procesy oparte o kontenery, które były wcześniej zagmatwane i dość skomplikowane w użyciu dały się przekształcić w mechanizmy łatwe do zastosowania przez programistów i administratorów. Dzięki technologi Dockera możliwości oferowane przez systemy Linuxowe mogą teraz zagościć w wielu systemach operacyjnych ponieważ może on również funkcjonować poza swoim rodzimym systemem operacyjnym. 

W zastosowaniu technologii Docker zaobserwowano również poprawę wydajności i możliwości skalowania aplikacji. Zamknięcie aplikacji w kontenerze ogranicza jej wpływ na środowisko jej działania. Niezbędne aplikacje systemowe zminimalizowane zostają do setek a często jedynie dziesiątek megabajtów co daje nieporównywalne korzyści biorąc pod uwagę fakt, iż tradycyjne obrazy maszyn wirtualnych to zazwyczaj mają rozmiary w Gigabajtach. 

Kolejnym zyskiem jest czas. Uruchomienie kontenera to zazwyczaj milisekundy, co jest dość sporom i odczuwalną różnicą w porównaniu do czasu jaki potrzebuje uruchomienie całej maszyny wirtualnej. 

Poza wymienionymi zaletami kontenery stanowią również wyzwania. Jednym z wyzwań jakie staną przed użytkownikami to zarządzanie kontenerami. W raz z powiększającą się ilością kontenerów zwiększa się ryzyko pogubienia się w ich gąszczu, a do tego trzeba jeszcze panować nad tym co się w tych kontenerach znajduje. Dalej należy opanować metody aktualizacji i przywracania kontenerów z zachowaniem ich porządku. i dbać o to by pozbyć się starych jakie wyszły już z użycia. Powyższe zagadnienia muszą być rozwiązane zanim zapadnie decyzja o przeniesieniu krytycznych aplikacji do formy kontenerowej.

Pierwsza 5 minutowa prezentacja produktu Docker - od tego wszystko się zaczęło



Wprowadzenie do Docker



Docker w Windows




Przydatne linki : 
  1. Oficjalna strona projektu Docker
  2. Github - Docker 
  3. What is Docker - Opensource.com
  4. Dokumentacja Docker
  5. YouTube - Docker
  6. Blogersii - Docker wprowadzenie 



Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości