Druga rewolucja w wirtualizacji serwerów

Nawet w świecie pełnym wirtualizacji przenoszenie aplikacji w miejsca, gdzie akurat są potrzebne, wciąż sprawia kłopoty. Wkrótce wszelkie problemy z tym związane mogą zniknąć za sprawą projektu Docker.

Aplikacje open source coraz szybciej pokonują dystans między innowacją a wdrożeniem. Wystarczy przytoczyć kilka przykładów: Hadoop i Big Data, OpenStack i chmura, MongoDB i bazy danych typu NoSQL. Docker to kolejny bardzo ciekawy projekt, umożliwiający umieszczanie aplikacji w lekkich kontenerach. Pokonuje on ten dystans jeszcze szybciej. Bardzo szybko stał się jedną z najbardziej interesujących technologii, które obecnie są rozwijane. Przyciąga uwagę największych graczy chmurowych, od Red Hata po Google, skłaniając ich do przemyślenia na nowo, jak można dostarczać i uruchamiać aplikacje oraz zarządzać nimi. Szczególnie w środowiskach chmurowych.

Dzieje się tak dlatego, ponieważ upakowane z użyciem Dockera aplikacje można uruchomiać niemal wszędzie. Wprawdzie takie możliwości miało już oferować kilka rozwiązań, ale Docker ma istotne zalety. Po pierwsze, działa w większości wersji Linuksa i został stworzony z wykorzystaniem funkcji LXC (Linux Containers), będącej częścią jądra tego systemu operacyjnego. Po drugie, aplikacja w kontenerze Docker jest samowystarczalna i instaluje się we własnym katalogu. Fakt, że aplikacja działa we własnym kontenerze, określanym także mianem piaskownicy (sandbox), podnosi znacznie poziom bezpieczeństwa. Po trzecie, Docker sprawia, że instalowanie linuksowych aplikacji staje się tak łatwe, jak instalowanie aplikacji w smartfonie. Można tę operację przeprowadzić z poziomu wiersza poleceń Linuksa niemal w mgnieniu oka.

Zobacz również:

Po czwarte, umożliwia korzystanie z różnych narzędzi i skryptów przeznaczonych do automatyzacji zarządzania centrami danych, np. Puppet or Chef, które bardzo przydają się przy masowych wdrożeniach aplikacji. Takimi operacjami również można zarządzać z poziomu wiersza poleceń, m.in. szybko dystrybuować aktualizacje aplikacji.

Projekt wzbudził duże zainteresowanie, choć wiele osób uważa, że jeszcze nie jest gotowy do wdrażania w środowiskach produkcyjnych. Zespół pracujący nad tym oprogramowaniem włożył dużo wysiłku, aby ukończyć pracę nad wersją nadającą się do wykorzystania w praktyce. Wydaje się, że ten cel został osiągnięty wraz z publikacją wersji Docker 1.0, a obecnie mamy już do dyspozycji wersję 1.4.1.

Wprowadzone w niej udoskonalenia zbliżają to oprogramowanie do oczekiwań użytkowników korporacyjnych. Docker może już łączyć się bezpośrednio z interfejsem sieciowym maszyny, na której działa, zamiast korzystać z wewnętrznego mostkowania, jak to miało miejsce we wcześniejszych wersjach.

Kontenery typu Linked Docker potrafią wyszukiwać się nawzajem na podstawie nazwy komputera, w którym działają, a jednocześnie plik zawierający informacje o komputerze jest modyfikowany, aby wprowadzić właściwą nazwę. Ponadto Docker dobrze współpracuje z

SELinux, daje duże możliwości monitorowania, zapisuje pliki logów dla każdego kontenera, a także oferuje mechanizmy redundancji, które poprawiają niezawodność działania.

To wszystko są istotne udoskonalenia, za sprawą których Docker nadaje się do coraz większej liczby zastosowań i scenariuszy w środowiskach produkcyjnych. Ponadto można korzystać z niego bezpłatnie. Docker został udostępniony na licencji open source Apache 2.0.

Docker w pigułce

Kontenery Dockera są jak maszyny wirtualne, ale wnoszą znacznie mniejszy narzut, można powiedzieć, że są lżejsze. Umożliwiają płynne przenoszenie aplikacji pomiędzy serwerami. Dodatkowo mają wbudowanie funkcje wersjonowania i zarządzania obrazami, dzięki którym można łatwo, w elastyczny sposób skalować aplikacje i usługi pomiędzy serwerami fizycznymi i wirtualnymi czy środowiskami chmurowymi.

Aby korzystać z takich możliwości, maszyny fizyczne bądź wirtualne muszą spełniać tylko jeden warunek – działać pod kontrolą rdzenia Linuksa w wersji 3.8 lub nowszej, które to wersje mają wbudowaną funkcję LXC (Linux Container).

Przykładowo, można utworzyć prosty kontener, w którym będzie działać serwer WWW Apache. Taki kontener można zbudować w standardowej dystrybucji Linuksa, np. Ubuntu czy CentOS, a wskazana aplikacja zostanie zainstalowana i skonfigurowana tak samo, jakby działa bezpośrednio w systemie Linux. Jednakże po umieszczeniu w kontenerze, można go zarejestrować w systemie kontroli wersji Git, a następnie wyrejestrować w dowolnym innym systemie i od razu uruchomić w pełni funkcjonalną, produkcyjną usługę.

Przykładowo, tak opakowany serwer Apache można powielić na maszynie wirtualnej, serwerze fizycznym, w chmurze Amazonu, czy w dowolnym innym miejscu, w którym da się uruchomić Dockera. W ogóle nie trzeba pamiętać o ewentualnych zależnościach pomiędzy aplikacją a komputerem. Nie trzeba też przejmować się instalacją, emulacją sprzętu czy różnymi wyzwaniami związanymi z tradycyjną wirtualizacją. Trzeba tylko uruchomić poprawnie zbudowany kontener tam, gdzie jest taka potrzeba.


TOP 200