Flux 7 wprowadza 8 powszechnie stosowanych przypadków użycia Dockera: uproszczoną konfigurację, zarządzanie potokami kodu, zwiększoną efektywność rozwoju, izolowane aplikacje, skonsolidowane serwery, możliwości debugowania, środowiska wielodzierżawcze oraz szybki program. Rozmawialiśmy o Dockerze, jak go używać i przy jakich okazjach? Może ten artykuł Ci pomoże. Jeśli jest coś do przekazania, możesz się z nami skontaktować przez komentarze.
Kilka tygodni temu uczestniczyliśmy w DockerCon, pierwszej konferencji technologicznej skupionej na Dockerze. Jest skierowany do deweloperów i praktyków zainteresowanych budowaniem, dostarczaniem i uruchamianiem aplikacji rozproszonych na otwartej platformie Docker, niezależnie od tego, czy działa ona na ich własnych notebookach, czy na maszynach wirtualnych w centrum danych. Byliśmy w konferencji, a Flux7 jest partnerem integracji systemów dla Docker Foundations oraz gościnnym prelegentem.
Nasz CEO, Aater Suleman, rozmawiał z jednym z naszych klientów. Chociaż DockerCon był bardzo zabawny, miałem wrażenie, że konferencja zbyt mocno skupiała się na szczegółach Dockera i pomijała zastosowania Dockera. Dlatego w tym artykule chcę przedstawić i podzielić się kilkoma praktycznymi zastosowaniami Dockera.
Zanim omówimy zastosowania Dockera, przyjrzyjmy się, co czyni Dockera tak wyjątkowym.
Docker oferuje lekką wirtualizację z prawie zerowym narzutem, co jest całkiem fajne.
Po pierwsze, nie musisz martwić się dodatkowymi narzutami związanymi z Dockerem, korzystając z możliwości wirtualizacji, którą niesie. Po drugie, możesz stworzyć większą liczbę kontenerów na tej samej maszynie niż na maszynie wirtualnej.
Kolejną zaletą Dockera jest to, że kontenery można uruchomić i zatrzymać w ciągu kilku sekund. Solomon Hykes, założyciel Docker, kiedyś opowiadał o tym, co Docker zrobił oprócz samego LXC, i możesz to sprawdzić.
Oto kilka moich przypadków użycia Docker, pokazujące, jak wykorzystać zalety Dockera do stworzenia spójnego środowiska przy niskich narzutach.
1. Uproszczona konfiguracja
To główny przypadek użycia Dockera reklamowany przez Docker Company. Największą zaletą maszyn wirtualnych jest możliwość uruchamiania różnych platform (oprogramowania, systemów) na twoim sprzęcie, a Docker zapewnia tę samą funkcjonalność z mniejszym dodatkowym narzutem. Pozwala to umieścić czas działania i konfigurację w kodzie, a następnie je wdrożyć, a konfiguracja tego samego Dockera może być używana w różnych środowiskach, co zmniejsza powiązania między wymaganiami sprzętowymi a środowiskami aplikacyjnymi.
2. Zarządzanie potokiem kodu
Poprzedni scenariusz bardzo pomaga w zarządzaniu pipeline'em kodu. Kod przechodzi przez wiele środowisk pośrednich od maszyny dewelopera aż po końcowe wdrożenie w środowisku produkcyjnym. Każde środowisko pośrednie ma swoje drobne różnice, a Docker zapewnia środowisko spójne od początku do uruchomienia, co znacznie ułatwia proces kodowania.
3. Poprawa efektywności rozwoju
To przynosi dodatkowe korzyści: Docker zwiększa produktywność dla deweloperów. Jeśli chcesz zobaczyć bardziej szczegółowy przykład, możesz sięgnąć po wykład Aatera na DevOpsDays Austin 2014 lub DockerCon.
W różnych środowiskach programistycznych wszyscy chcemy robić dwie rzeczy dobrze. Po pierwsze, chcemy, aby środowisko deweloperskie było jak najbardziej zbliżone do środowiska produkcyjnego, a po drugie, chcemy szybko zbudować środowisko programistyczne.
Idealnie, aby osiągnąć pierwszy cel, musimy uruchamiać każdą usługę w osobnej maszynie wirtualnej, aby monitorować kondycję usługi w produkcji. Jednak nie chcemy potrzebować połączenia sieciowego za każdym razem, a szczególnie uciążliwe jest łączenie zdalne za każdym razem przy rekompilacji. To właśnie Docker robi szczególnie dobrze – maszyny w środowisku programistycznym zwykle mają stosunkowo małą pamięć, a przy użyciu wirtualnej często musimy dodawać pamięć do maszyn w środowisku programistycznym, ale teraz Docker może łatwo pozwolić na uruchomienie dziesiątek usług w Dockerze.
4. Izoluj zastosowania
Istnieje wiele powodów, dla których możesz zdecydować się uruchamiać różne aplikacje na jednej maszynie, na przykład wspomniane wcześniej scenariusze, aby zwiększyć efektywność rozwoju.
Często musimy rozważyć konsolidację serwerów, aby obniżyć koszty, oraz podział monolitycznej aplikacji na jedną, luźno powiązaną usługę. Jeśli chcesz zrozumieć, dlaczego luźno powiązane aplikacje są tak ważne, sprawdź artykuł Steve'a Yege'a, który porównuje Google i Amazon.
5. Konsolidacja serwerów
Tak jak wiele aplikacji jest integrowanych przez maszyny wirtualne, zdolność Dockera do izolowania aplikacji pozwala Dockerowi na konsolidację wielu serwerów w celu obniżenia kosztów. Brak ilości pamięci z wielu systemów operacyjnych i możliwość współdzielenia nieużywanej pamięci między wieloma instancjami, Docker może zapewnić lepsze rozwiązanie konsolidacji serwerów niż maszyny wirtualne.
6. Zdolność debugowania
Docker oferuje wiele narzędzi, które niekoniecznie są przeznaczone tylko do kontenerów, ale działają dla kontenerów. Oferują wiele funkcji, w tym możliwość ustawiania punktów kontrolnych dla kontenerów, zestawionych wersji oraz widzenia różnic między dwoma kontenerami, co może pomóc w debugowaniu błędów. Przykład tego znajdziesz w artykule o Docker Save the World.
7. Środowisko wielodzierżawcze
Innym ciekawym zastosowaniem Dockera są aplikacje wielodzierżawcze, które pozwalają uniknąć przepisywania krytycznych aplikacji. Przykładem tego scenariusza jest opracowanie szybkiego, łatwego w użyciu środowiska wielodzierżawcowego dla aplikacji IoT. Ten podstawowy kod wielodzierżawcy jest złożony i trudny w obsłudze, a planowanie takiej aplikacji to strata czasu i pieniędzy.
Dzięki Dockerowi łatwo i tanio jest tworzyć izolowane środowiska dla wielu instancji warstwy aplikacji każdego tenanta, dzięki szybkości środowisk Dockera i ich efektywnym poleceniam różnicowym.
Więcej o tym scenariuszu możesz dowiedzieć się tutaj.
8. Szybkie wdrożenie
Przed maszynami wirtualnymi wprowadzenie nowych zasobów sprzętowych zajmuje kilka dni. Technologia wirtualizacji Dockera skraca ten czas do minut, a Docker po prostu tworzy kontenerowy proces bez uruchamiania systemu operacyjnego, co zajmuje kilka sekund. To właśnie cenią zarówno Google, jak i Facebook.
Możesz stworzyć zasob niszczący w swoim centrum danych, nie martwiąc się o koszty związane z restartem. Zazwyczaj centra danych mają tylko 30% wykorzystania zasobów, a wykorzystanie zasobów można poprawić dzięki zastosowaniu Dockera i efektywnej alokacji zasobów. |