Przewodnik dla początkujących po Docker Compose

Przewodnik dla początkujących po Docker Compose
Docker Compose jest jednym z najbardziej przydatnych narzędzi dla programistów i administratorów systemu. Wiele miejsc pracy wymaga osoby z wiedzą o tej technologii, więc Docker i Docker Compose są gorące w przestrzeni DevOps. Bez wątpienia wiedza o tym, jak korzystać z tych technologii, przyniesie korzyść karierę IT.

Jeśli jesteś początkującym dla Docker, ale masz pewną wiedzę na temat Dockera, ten artykuł jest dla Ciebie. Możesz dowiedzieć się o:

  • Co to jest Docker?
  • Popularne porównania
  • Docker komponuje vs kubernetes
  • Docker komponuje vs Docker Swarm
  • Instalowanie Docker Compose
  • Kompozycja dokera.plik YML
  • Polecenia Docker-Compose

Przed zanurzeniem się w soczystych częściach tego artykułu małe tło na technologii powinno być niesamowite.

Konteneralizacja stała się kluczową częścią infrastruktury oprogramowania, a dotyczy to dużych, średnich lub małych projektów. Chociaż kontenery nie są nowe, Docker uczynił je popularnymi. W przypadku kontenerów problemy zależności stają się już przeszłością. Pojemniki odgrywają również ogromną rolę w sprawianiu, że architektura mikro-usług bardzo skutecznie. Aplikacje są wykonane z mniejszych usług, więc łatwo jest mieć te usługi w kontenerach i komunikuje się.

Problem z robieniem tego, polega na tym, że będzie tak wiele kontenerów. Tak, że zarządzanie nimi staje się złożone. Stwarza to potrzebę narzędzia pomaga uruchomić wiele kontenerów, które wykonuje Docker Compose. Na końcu artykułu zrozumiesz podstawowe koncepcje dokera i będziesz mógł go również używać.

Co to jest Docker?

Bez całej złożoności Docker Compose to narzędzie, które pozwala zarządzać wieloma kontenerami Docker. Pamiętaj o mikro-usługach? Koncepcja podziału aplikacji internetowej na różne usługi? Cóż, usługi te będą działać w poszczególnych kontenerach, które należy zarządzać.

Wyobraź sobie, że aplikacja internetowa ma niektóre z tych usług:

  • Zapisać się
  • Zalogować się
  • Zresetuj hasło
  • Historia
  • Wykres

Po architekturze mikrousługów, usługi te zostaną podzielone i uruchomione w osobnych pojemnikach. Docker Compose ułatwia zarządzanie wszystkimi tymi kontenerami, zamiast zarządzać nimi indywidualnie. Należy zauważyć, że Docker Compose nie buduje wyraźnie obrazów Docker. Zadanie budowania obrazów wykonuje Docker za pośrednictwem Dockerfile.

Popularne porównania

Często ma wiele rozwiązań problemu. Docker komponuje ten problem zarządzania wieloma kontenerami. W rezultacie często istnieją porównania z innymi rozwiązaniami. Należy zauważyć, że większość z tych porównań jest niewłaściwe. Chociaż często nie są ważne, najlepiej się o nich dowiedzieć, ponieważ pomaga to lepiej zrozumieć Docker.

Dwa porównania, które należy omówić, to:

  • Docker komponuje vs kubernetes
  • Docker komponuje vs Docker Swarm

Docker komponuje vs kubernetes

Kubernetes jest często porównywana do Docker Compose. Ale podobieństwa w obu narzędziach są minuty, z dużymi odmiennościami. Te technologie nie są na tym samym poziomie ani skali. Dlatego porównywanie obu narzędzi jest całkowicie błędne.

Kubernetes popularnie znany jako K8s to narzędzie open source, które można użyć do automatyzacji kontenerów (nie ograniczonych do Docker). Dzięki K8S możesz wdrażać i administrować pojemnikami, upewniając się, że skalują się przy różnych obciążeniach. Kubernetes zapewnia, że ​​kontenery są odporne na uszkodzenia i działają optymalnie, powodując, że nie są wcale, których nie dostaniesz od Docker Compose.

Kubernetes to mocniejsze narzędzie. Jest bardziej odpowiedni do administrowania pojemników do zastosowań na dużą skalę w produkcji.

Docker komponuje vs Docker Swarm

Docker Compose jest również często porównywana z Docker Swarm i jest tak źle, jak porównanie Kubernetes. Zamiast tego Docker Swarm powinien być tym porównanym z Kubernetes.

Docker Swarm to narzędzie open source, które pozwala wykonywać orkiestrację kontenerową, tak jak Kubernetes. Oba mają swoje zalety i wady, ale nie jest to temat dyskusji. Zrobisz dobrze, wiedząc, że oba są podobne i nie jest alternatywą dla Docker Compose.

Instalowanie Docker Compose

Docker Compose to oficjalne narzędzie Docker, ale nie jest wyposażone w instalację Docker. Musisz więc zainstalować go jako osobny pakiet. Proces instalacji Docker Compose for Windows i Mac jest dostępny na oficjalnej stronie.

Aby zainstalować Docker Compose w Ubuntu, możesz użyć następującego polecenia:

sudo apt-get instal instaluj kompozycję dokera

Aby zainstalować komponuj Docker na innych dystrybucjach Linux, możesz użyć curl. Po prostu uruchom następujące polecenia:

sudo curl -l
https: // github.com/docker/compose/wydania/pobieranie/1.18.0/Docker-Compose-'uname
-s ' -' uname -m '-o/usr/local/bin/compose

Następnie:

sudo chmod +x/usr/local/bin/compose

Pierwsze polecenie pobiera najnowszą wersję Docker Compose do katalogu poświęconego pakietom. Drugi ustawia uprawnienia pliku, dzięki czemu jest wykonywalny.

Kompozycja dokera.plik YML

Nie będzie okropnie błędne stwierdzenie, że plik komponsu Docker jest komponowany Docker, czym jest Dockerfile dla Docker. Wewnątrz pliku komponsu Docker leży wszystkie instrukcje, które dokonuje Docker, podąża za zarządzaniem kontenerami. Tutaj definiujesz usługi, które kończą się kontenerami. Definiujesz także sieci i tomy, na których polegają usługi.

Plik komponsu Docker używa składni YAML i musisz zapisać jako kompozycję Docker.yml. Możesz mieć usługi dla kolejek backend, frontend, bazy danych i wiadomości w aplikacji internetowej. Usługi te będą wymagały określonych zależności. Zależności, takie jak sieci, porty, magazyn dla optymalnego działania. Wszystko, co potrzebne do całej aplikacji, zostanie zdefiniowane w pliku komponsu Docker.

Potrzebujesz podstawowego zrozumienia składni YAML, aby napisać plik kompozycji. Jeśli nie znasz tego, zrozumienie powinno zająć mniej niż godzinę. W pliku będzie wiele par kluczowych wartości lub dyrektyw. Najwyższe poziomy to:

  • Wersja
  • Usługi
  • Sieć
  • Wolumeny

Jednak omówiono tylko wersję i usługi, ponieważ możesz zdefiniować pozostałe dwa w dyrektywie usług.

Wersja

Podczas pisania pliku najpierw zdefiniujesz wersję. Jak w chwili pisania, Docker Compose ma tylko wersje 1, 2 i 3. Nic dziwnego, że jest to zalecana wersja, ponieważ ma pewne różnice w stosunku do starszych wersji.

Możesz określić wersję do użycia dla Docker Compose w pliku, jak pokazano poniżej:

  • Wersja: „3”
  • Wersja 2.4 ”
  • Wersja 1.0 ”

Usługi

Klucz serwisowy jest prawdopodobnie najważniejszym kluczem w pliku komponowanym Docker. Tutaj określasz kontenery, które chcesz utworzyć. Istnieje wiele opcji i mnóstwa kombinacji do konfigurowania kontenerów w tej sekcji pliku. Są to niektóre opcje, które możesz zdefiniować w kluczu usług:

  • Obraz
  • Contener_name
  • Uruchom ponownie
  • Zależy od
  • Środowisko
  • Porty
  • Wolumeny
  • Sieci
  • Punkt wejścia

W pozostałej części tej sekcji dowiesz się, jak każda z tych opcji wpływa na kontenery.

Obraz

Ta opcja określa, jaki obraz używa usługi. Wykorzystuje tę samą konwencję, jak używasz podczas pobierania obrazu z DockerHub w pliku dokerowym. Oto przykład:

Zdjęcie: Postgres: najnowszy

Jednak nie ma ograniczeń związanych z używaniem samych plików DockerHub. Możesz także budować obrazy z komputera za pośrednictwem pliku Docker Compose, używając pliku dokera. Możesz to użyć dyrektyw „kompilacji”, „kontekstu” i „DockerFile”.

Oto przykład:

zbudować:
kontekst: .
DockerFile: DockerFile

„Kontekst” powinien zawierać ścieżkę do katalogu za pomocą pliku dokera. Następnie „DockerFile” zawiera nazwę pliku dokera, który ma być używany. Konwencjonalne jest zawsze nazywanie plików dokerów „plikiem dokerowym”, ale daje to możliwość użycia czegoś innego. Powinieneś zauważyć, że nie jest to jedyny sposób na użycie obrazu za pomocą pliku dokera.

Contener_name

Docker przypisuje losowe nazwy do kontenerów. Ale możesz mieć niestandardowe nazwy kontenerów. Z klawiszem „Container_name” możesz podawać określone nazwy kontenerom, zamiast dokków losowo wygenerowane nazwy.

Oto przykład:

Container_name: Linuxhint-App

Jest jednak jedna rzecz, o którą powinieneś być ostrożnie: nie nadaj tej samej nazwy wielu usługom. Nazwy kontenerów muszą być unikalne; to spowoduje awarię usług.

Uruchom ponownie

Infrastruktura oprogramowania jest skazana na awarię. Dzięki wiedzy o tym łatwiej jest zaplanować wyzdrowienie po tej porażce. Istnieje wiele powodów, dla których pojemnik się nie powiódł, więc klawisz restartu każe pojemnikowi obudzić się lub nie. Masz następujące opcje, nie, zawsze, na tanie. Te opcje sugerują, że kontener nigdy nie uruchomi się ponownie, zawsze uruchomi się ponownie, ponownie uruchomi się tylko po awarii lub tylko po zatrzymaniu.

Oto przykład:

Uruchom ponownie: Zawsze

Zależy od

Usługi działają w izolacji. Ale praktycznie usługi nie mogą wiele zrobić w izolacji. Musi być zależność od innych usług. Na przykład usługa zaplecza aplikacji internetowej będzie zależeć od baz danych, usług buforowania itp. W klawiszu „Zależności” możesz dodać zależności.

Oto przykład:

zależy od:
- db

Robienie tego oznacza, że ​​Docker Compose rozpocznie te usługi przed bieżącą. Nie zapewnia jednak, że usługi te są gotowe do użytku. Jedyną gwarancją jest to, że kontenery się zaczną.

Środowisko

Aplikacje zależą od niektórych zmiennych. Aby uzyskać bezpieczeństwo i łatwość użytkowania, wyodrębniasz je z kodu i konfigurujesz jako zmienne środowiskowe. Przykładami takich zmiennych są klucze API, hasła i tak dalej. Są one powszechne w aplikacjach internetowych. Zauważ, że ten klucz działa tylko wtedy, gdy w tej usłudze nie ma dyrektywy „buduj”. Stąd utwórz obraz wcześniej.

Spójrz na to:

środowisko:
API-key: „The-Aap-Key”
Config: „Development”
Session_secret: „secret”

Jeśli zamierzasz użyć dyrektywy „Build” niezależnie, musisz zdefiniować zmienne środowiskowe w dyrektywie „Args”. Dyrektywa „Args” jest sub-directive „Build”.

Oto przykład:

zbudować:
kontekst: .
Args:
API-key: „The-Aap-Key”
Config: „Development”
session_secret: „secret”

Porty

Brak kontenera nie działa w izolacji, mimo że nie bierze się od innych. Aby podać link do komunikowania się z „światem zewnętrznym”, musisz mapować porty. Mapujesz port kontenera Dockera do rzeczywistego portu hosta. Od Dockera mogłeś natknąć się na argument „-p” używany do mapowania portów. Dyrektywa portów działa podobna do argumentu „-p”.

Porty:
- „5000: 8000”

Wolumeny

Kontenery Docker nie mają środków do utrzymywania danych, więc tracą dane podczas ponownego uruchomienia. Dzięki tomom możesz obejść to. Wolume umożliwia utworzenie trwałego przechowywania danych. Robi to poprzez zamontowanie katalogu z hosta Dockera w katalogu kontenera Dockera. Możesz także skonfigurować wolumeny jako usługi na najwyższym poziomie.

Oto przykład:

wolumeny:
- host-dir:/test/katalog

Podczas konfigurowania objętości dostępnych jest wiele opcji, możesz je sprawdzić.

Sieci

Sieci można również tworzyć w usługach. Dzięki klawiszy sieci. Tutaj możesz skonfigurować sterownik, którego sieć używa, jeśli umożliwia IPv6 itp. Możesz konfigurować sieci, takie jak usługi, podobnie jak wolumine.

Oto przykład:

Sieci:
- domyślny

Istnieje wiele opcji podczas konfigurowania sieci, możesz je sprawdzić.

Punkt wejścia

Po uruchomieniu kontenera często musisz uruchomić określone polecenia. Na przykład, jeśli usługa jest aplikacją internetową, musisz uruchomić serwer. Klucz punktu wejściowego pozwala to zrobić. Punkt Entrypo działa jak punkt Entrypo w DockerFile. Jedyną różnicą w tym przypadku jest to, że cokolwiek tutaj zdefiniujesz, zastępuje konfiguracje punktu wejścia w Dockerfile.Punkt wejściowy: Run Flask

Oto przykład:

Punkt wejściowy: Run Flask

Docker komponuje polecenia

Po utworzeniu pliku Docker-Compose musisz uruchomić określone polecenia, aby skomposować do pracy. W tej sekcji dowiesz się o niektórych głównych poleceń komponowych. Oni są:

  • Komposowanie dokera
  • Kompozycja dokera w dół
  • Start-compose Docker
  • Zatrzymaj zatrzymanie dokera
  • Pauza kompozycji dokera
  • Doker-kompozyt
  • Ps-kompose dokera

Komposowanie dokera

To polecenie Docker-Compose pomaga budować obraz, a następnie tworzy i uruchamia kontenery Docker. Kontenery pochodzą z usług określonych w pliku kompozycji. Jeśli kontenery już działają i uruchamiasz Docker-Compose, odtwarza to pojemnik. Polecenie to:

Komposowanie dokera

Start-compose Docker

To polecenie Docker-Compose rozpoczyna kontenery Docker, ale nie buduje obrazów ani nie tworzy kontenerów. Więc rozpoczyna się pojemniki tylko wtedy, gdy zostały utworzone wcześniej.

Zatrzymaj zatrzymanie dokera

Często będziesz musiał zatrzymać pojemniki po ich utworzeniu i uruchomieniu. Oto, gdzie przydaje się komenda zatrzymania dokera. To polecenie zasadniczo zatrzymuje uruchomione usługi, ale kontenery konfiguracyjne i sieci pozostają nienaruszone.
Polecenie to:

Zatrzymaj zatrzymanie dokera

Kompozycja dokera w dół

Polecenie Docker-Compose Down również zatrzymuje kontenery Docker, tak jak polecenie Stop. Ale idzie o krok dalej. Kompozycja dokera, nie tylko zatrzymuje pojemniki, ale także je usuwa. Sieci, woluminy i rzeczywiste obrazy Docker można również usunąć, jeśli użyjesz niektórych argumentów. Polecenie to:

Kompozycja dokera w dół

Jeśli zamierzasz usunąć objętości, określisz, dodając -voluume. Na przykład:

Kompozycja dokera w dół-Volulume

Jeśli zamierzasz usunąć obrazy, określisz, dodając -RMI All Lub -RMI Local. Na przykład:

Docker-Compose Down-RMI All
Docker-Compose Down-RMI Local

Gdzie Wszystko powoduje, że Docker komponuje wszystkie obrazy i lokalny powoduje, że Docker komponuje tylko obrazy bez niestandardowego zestawu tagu w polu „Image”.

Pauza kompozycji dokera

Istnieją scenariusze, w których musisz zawiesić pojemnik, bez zabijania lub usuwania. Możesz to osiągnąć dzięki poleceniu pauzy kompozycji Docker. Zatrzymuje działalność tego pojemnika, więc możesz je wznowić, kiedy chcesz. Polecenie to:

Pauza kompozycji dokera

Doker-kompozyt

Unupauza kompozycji Docker jest przeciwieństwem polecenia pauzy kompozycji Docker. Możesz go użyć do wznowienia zawieszenia procesów w wyniku użycia pauzy kompozycji Docker. Polecenie to:

Doker-kompozyt

Ps-kompose dokera

PS-kompose Docker wymienia wszystkie kontenery utworzone z usług w pliku Docker-Compose. To jest podobne do Docker Ps który wymienia wszystkie kontenery działające na hoście Docker. Jednak PS kompozycji Docker jest specyficzny dla kontenerów z pliku komponowania Docker. Polecenie to:

Ps-kompose dokera

Łączenie tego wszystkiego

Teraz, gdy widziałeś niektóre z kluczowych koncepcji za plik komponsu Docker, połączmy to wszystko. Poniżej znajduje się przykładowy plik kompozycji Docker dla aplikacji internetowej Python Django. W tym pliku zobaczysz rozkład każdej linii i zobaczysz, co robią.

Wersja: „3”
Usługi:
DB:
Zdjęcie: Postgres
sieć:
zbudować: .
Polecenie: Python Manage.Py Runserver 0.0.0.0: 8000
wolumeny:
- .:/kod
Porty:
- „8000: 8000”
zależy od:
- db

Krótka historia jest taka, że ​​dzięki temu plikowi Docker-Compose tworzona jest baza danych PostgreSQL i uruchamia się serwer Django.

Długa historia to:

  1. Ten plik używa wersji 3 kompozycji Docker.
  2. Tworzy dwie usługi. DB i usługi internetowe.
  3. Usługa DB korzysta z oficjalnego obrazu Docker Postgres.
  4. Usługa internetowa buduje własny obraz z bieżącego katalogu. Ponieważ nie definiuje on kontekstu i kluczy Dockerfile, DockerFile ma zostać nazwany przez konwencję „.
  5. Polecenie, które będzie działać po rozpoczęciu kontenera.
  6. Objętość i porty są zdefiniowane. Oba używają konwencji hosta: mapowanie kontenerów.
  7. W przypadku woluminu bieżący katalog „.”Jest odwzorowany na katalog„/kod ”wewnątrz kontenera. Pomaga to danych w pojemniku stać się trwałe, więc nie jest tracone za każdym razem, gdy kontener zaczyna.
  8. W przypadku portu port hosta 8000 jest mapowany na port 8000 kontenera. Zauważ, że aplikacja internetowa działa na porcie 8000. Stąd aplikacja internetowa można uzyskać do hosta za pośrednictwem tego portu.
  9. Wreszcie usługa internetowa zależy od usługi DB. Dlatego usługa internetowa rozpocznie się dopiero po rozpoczęciu kontenera DB.
  10. Więcej na temat pliku dokera dla aplikacji Django i pliku kompozycji Docker można uzyskać z dokumentacji.

Wniosek

Nie musisz być ekspertem od Docker, aby korzystać z Docker Compose. Jako początkujący nie zamierza opanować tego narzędzia, dobrze jest dowiedzieć się, czego potrzebujesz sam. W tym artykule nauczyłeś się podstaw Dockera. Teraz rozumiesz, dlaczego Docker Compose jest potrzebny, niewłaściwe porównania, jak skonfigurować plik konfiguracyjny komponowania Dockera, a także polecenia. To ekscytujące, wiedząc o tych rzeczach, ale prawdziwa radość wynika z tego, że stawianie ich do ćwiczenia. Czas zabrać się do pracy.