Doker

Przewodnik dla początkujących do Docker Compose

Przewodnik dla początkujących do Docker Compose
Docker Compose to jedno z najbardziej przydatnych narzędzi dla programistów i administratorów systemu. Wiele zadań wymaga kogoś, kto zna tę technologię, 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ści Twojej karierze IT.

Jeśli jesteś początkującym użytkownikiem Docker Compose, ale masz pewną wiedzę na temat Dockera, ten artykuł jest dla Ciebie. Dowiesz się o:

Zanim zagłębimy się w soczyste części tego artykułu, krótkie wprowadzenie do technologii powinno być niesamowite.

Konteneryzacja stała się kluczową częścią infrastruktury oprogramowania i dotyczy to dużych, średnich lub małych projektów. Chociaż kontenery nie są nowe, Docker sprawił, że stały się popularne. Dzięki kontenerom problemy z zależnościami odchodzą w przeszłość. Kontenery odgrywają również ogromną rolę w tworzeniu bardzo efektywnej architektury mikrousług. Aplikacje oprogramowania składają się z mniejszych usług, więc łatwo jest mieć te usługi w kontenerach i komunikują się.

Problem z tym polega na tym, że będzie działać tak wiele kontenerów. Tak, że zarządzanie nimi staje się skomplikowane. Stwarza to potrzebę narzędzia pomagającego uruchamiać wiele kontenerów, co robi Docker Compose. Na końcu artykułu zrozumiesz podstawowe pojęcia Docker Compose i będziesz w stanie z niego korzystać.

Co to jest Docker Compose?

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

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

Zgodnie z architekturą podobną do mikrousług, usługi te zostaną podzielone i uruchomione w osobnych kontenerach. Docker Compose ułatwia zarządzanie wszystkimi tymi kontenerami, zamiast zarządzać nimi indywidualnie. Należy zauważyć, że Docker Compose nie tworzy jawnie obrazów Docker. Zadanie budowania obrazów jest wykonywane przez Docker za pośrednictwem pliku Dockerfile.

Popularne porównania

Często istnieje wiele rozwiązań problemu have. Docker Compose rozwiązuje ten problem zarządzania wieloma kontenerami. W efekcie często dochodzi do porównań z innymi rozwiązaniami. Należy pamiętać, że większość tych porównań jest błędna. Chociaż często nie są prawidłowe, najlepiej jest się o nich dowiedzieć, ponieważ pomaga to lepiej zrozumieć Docker Compose.

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

Docker Compose a Kubernetes

Kubernetes jest często porównywany do Docker Compose. Ale podobieństwa w obu narzędziach są niewielkie, z dużymi różnicami. Te technologie nie są na tym samym poziomie lub skali. Dlatego porównywanie obu narzędzi jest całkowicie błędne.

Kubernetes popularnie znany jako k8s to narzędzie typu open source, które może służyć do automatyzacji kontenerów (nie ogranicza się do Dockera). Dzięki k8s możesz wdrażać kontenery i administrować nimi, upewniając się, że skalują się przy różnych obciążeniach. Kubernetes zapewnia, że ​​kontenery są odporne na błędy i działają optymalnie, powodując ich samonaprawianie, czego nie uzyskasz dzięki Docker Compose.

Kubernetes to potężniejsze narzędzie. Jest bardziej odpowiedni do administrowania kontenerami do zastosowań na dużą skalę w produkcji.

Docker Compose vs Docker Swarm

Docker Compose jest również często porównywany do Docker Swarm i jest tak samo błędny jak porównanie Kubernetes. Zamiast tego, Docker Swarm powinien być tym, który jest porównywany do Kubernetes.

Docker Swarm to narzędzie typu open source, które pozwala przeprowadzać orkiestrację kontenerów tak samo, jak Kubernetes. Oba mają swoje plusy i minusy, ale to nie jest temat dyskusji. Poradzisz sobie, wiedząc, że oba są podobne i żadna nie jest alternatywą dla Docker Compose.

Instalowanie Docker Compose

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

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

sudo apt-get install docker-compose

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

sudo curl -L
https://github.com/docker/compose/releases/download/1.18.0/docker-compose-'uname
-s'-'uname -m' -o /usr/local/bin/docker-compose

Następnie:

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

Pierwsze polecenie pobiera najnowszą wersję Docker Compose do katalogu dedykowanego dla pakietów. Drugi ustawia uprawnienia do pliku, czyniąc go wykonywalnym.

Docker-Compose.Plik YML

Nie będzie strasznie źle powiedzieć, że plik Docker Compose jest dla Docker Compose, czym plik Dockerfile dla Dockera. Wewnątrz pliku Docker Compose znajdują się wszystkie instrukcje, które Docker Compose wykonuje podczas zarządzania kontenerami. Tutaj definiujesz usługi, które stają się kontenerami. Określasz również sieci i wolumeny, od których zależą usługi.

Plik Docker Compose używa składni YAML i musisz zapisać jako docker-compose.Yml. Możesz mieć usługi dla backendu, frontendu, bazy danych i kolejek wiadomości w aplikacji internetowej. Te usługi będą wymagały określonych zależności. Zależności, takie jak sieci, porty, pamięć masowa dla optymalnego działania. Wszystko, co potrzebne dla całej aplikacji, zostanie zdefiniowane w pliku Docker Compose.

Potrzebujesz podstawowej wiedzy na temat składni YAML, aby napisać swój plik do tworzenia. Jeśli nie znasz tego, zrozumienie powinno zająć mniej niż godzinę. Twój plik będzie zawierał wiele par klucz-wartość lub dyrektyw. Te najwyższego poziomu to:

Jednak omówione zostaną tylko wersja i usługi, ponieważ pozostałe dwie można zdefiniować w dyrektywie usługowej.

Wersja

Podczas pisania pliku najpierw określisz wersję the. W chwili pisania tego tekstu 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:

Usługi

Klucz usługi jest prawdopodobnie najważniejszym kluczem w pliku Docker Compose. Tutaj określasz kontenery, które chcesz utworzyć. W tej sekcji pliku jest wiele opcji i mnóstwo kombinacji konfiguracji kontenerów. Oto kilka opcji, które możesz zdefiniować pod kluczem usług:

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

Wizerunek

Ta opcja określa, jakiego obrazu używa usługa. Używa tej samej konwencji, której używasz podczas pobierania obrazu z Dockerhub w pliku Dockerfile. Oto przykład:

obraz: postgres: najnowszy

Nie ma jednak ograniczeń w korzystaniu z samych plików Dockerhub. Możesz także tworzyć obrazy ze swojego komputera za pomocą pliku Docker Compose, używając pliku Dockerfile. W tym celu możesz użyć dyrektyw „build”, „context” i „dockerfile”.

Oto przykład:

budować:
kontekst: .
plik docker: plik docker

„Kontekst” powinien zawierać ścieżkę do katalogu z plikiem Dockerfile. Następnie „dockerfile” zawiera nazwę używanego pliku Dockerfile. Zwykle nazywa się pliki Dockerfile jako „Dockerfile”, ale daje to możliwość użycia czegoś innego. Należy pamiętać, że nie jest to jedyny sposób na użycie obrazu poprzez plik Dockerfile.

Nazwa_kontenera

Docker przydziela kontenerom losowe nazwy. Ale możesz chcieć mieć niestandardowe nazwy pojemników. Za pomocą klucza „container_name” możesz nadać określone nazwy kontenerom zamiast losowo generowanych nazw Dockerów.

Oto przykład:

nazwa_kontenera: aplikacja-linuxhint

Jest jednak jedna rzecz, na którą należy uważać: nie nadawać tej samej nazwy wielu usługom. Nazwy kontenerów muszą być unikalne; spowoduje to awarię usług.

Uruchom ponownie

Infrastruktura oprogramowania jest skazana na niepowodzenie. Wiedząc o tym, łatwiej jest zaplanować wyjście z tej porażki. Istnieje wiele przyczyn niepowodzenia kontenera, więc klawisz restartu mówi kontenerowi, czy ma się obudzić, czy nie. Masz następujące opcje: nie, zawsze, w przypadku awarii i do czasu zatrzymania. Te opcje oznaczają, że kontener nigdy nie uruchomi się ponownie, zawsze będzie się uruchamiał ponownie, tylko w przypadku niepowodzenia lub tylko po zatrzymaniu.

Oto przykład:

restart: zawsze

Zależy od

Usługi działają w izolacji. Ale praktycznie usługi nie mogą wiele zdziałać w izolacji. Musi istnieć zależność od innych usług. Na przykład usługa backendu aplikacji internetowej będzie zależeć od baz danych, usług pamięci podręcznej itp. W kluczu „depends_on” możesz dodać zależności.

Oto przykład:

zależy od:
- db

Spowoduje to, że Docker Compose uruchomi te usługi przed bieżącą. Nie gwarantuje to jednak, że te usługi są gotowe do użycia. Jedyną gwarancją jest uruchomienie kontenerów containers.

Środowisko

Aplikacje zależą od pewnych zmiennych. Dla bezpieczeństwa i łatwości użytkowania wyodrębniasz je z kodu i ustawiasz jako zmienne środowiskowe. Przykładami takich zmiennych są klucze API, hasła itp. Są one powszechne w aplikacjach internetowych. Zauważ, że ten klucz działa tylko wtedy, gdy w tej usłudze nie ma dyrektywy „buduj”. Dlatego stwórz obraz wcześniej.

Spójrz na to:

środowisko:
KLUCZ API: 'klucz-api'
KONFIG: 'rozwój'
SESSION_SECRET: „sekret”

Jeśli mimo wszystko zamierzasz użyć dyrektywy „build”, musisz zdefiniować zmienne środowiskowe w dyrektywie „args”. Dyrektywa „args” jest poddyrektywą „buduj”.

Oto przykład:

budować:
kontekst: .
argumenty:
klucz-api: 'klucz-api'
konfiguracja: 'rozwój'
session_secret: 'tajemnica'

Porty

Żaden kontener nie działa w odosobnieniu, mimo że działa oddzielnie od pozostałych. Aby zapewnić łącze do komunikacji ze „światem zewnętrznym”, musisz zmapować porty. Mapujesz port kontenera Docker na rzeczywisty port hosta. W Dockerze mogłeś natknąć się na argument „-p”, który jest używany do mapowania portów. Dyrektywa portów działa podobnie do argumentu „-p”.

porty:
- „5000:8000”

Wolumeny

Kontenery Dockera nie mają możliwości trwałego przechowywania danych, więc tracą dane po ponownym uruchomieniu. Dzięki woluminom możesz to obejść. Woluminy umożliwiają tworzenie trwałego przechowywania danych. Robi to, montując katalog z hosta docker do katalogu kontenera docker do. Możesz także skonfigurować woluminy jako usługi najwyższego poziomu.

Oto przykład:

wolumeny:
- katalog-hosta:/test/katalog

Podczas konfigurowania woluminów dostępnych jest wiele opcji, możesz je sprawdzić.

Sieci

Sieci można również tworzyć w usługach. Za pomocą klucza sieciowego możesz skonfigurować sieć dla poszczególnych usług. Tutaj możesz skonfigurować sterownik używany przez sieć, jeśli zezwala na IPv6 itp. Możesz skonfigurować sieci, takie jak usługi, podobnie jak woluminy.

Oto przykład:

sieci:
- domyślna

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

Punkt wejścia

Kiedy uruchamiasz kontener, często musisz uruchamiać określone polecenia. Na przykład, jeśli usługa jest aplikacją internetową, musisz uruchomić serwer. Klawisz wejścia pozwala to zrobić. Wejście działa jak ENTRYPOINT w Dockerfile. Jedyną różnicą w tym przypadku jest to, że cokolwiek tutaj zdefiniujesz nadpisuje konfiguracje ENTRYPOINT w Dockerfile.punkt wejścia: uruchomienie kolby

Oto przykład:

punkt wejścia: uruchomienie kolby

Polecenia tworzenia Dockera

Po utworzeniu pliku Docker-Compose musisz uruchomić określone polecenia, aby funkcja Compose działała. W tej sekcji poznasz kilka głównych poleceń Docker Compose. Oni są:

Docker-utwórz up

To polecenie Docker-compose pomaga budować obraz, a następnie tworzy i uruchamia kontenery Docker. Kontenery pochodzą z usług określonych w pliku tworzenia. Jeśli kontenery są już uruchomione i uruchomisz docker-compose up, kontener zostanie odtworzony. Polecenie to:

docker-compose up

Rozpocznij tworzenie dockera

To polecenie Docker-compose uruchamia kontenery Dockera, ale nie tworzy obrazów ani nie tworzy kontenerów. Więc uruchamia kontenery tylko wtedy, gdy zostały wcześniej utworzone.

Docker-compose stopcom

Często będziesz musiał zatrzymać kontenery po ich utworzeniu i uruchomieniu. Tutaj przydaje się polecenie zatrzymania Docker-compose. To polecenie zasadniczo zatrzymuje działające usługi, ale kontenery instalacyjne i sieci pozostają nienaruszone.
Polecenie to:

docker-compose stop

Docker-zredaguj w dół

Polecenie Docker-compose down zatrzymuje również kontenery Dockera, tak jak robi to polecenie stop. Ale to idzie o krok dalej. Docker-compose down nie tylko zatrzymuje kontenery, ale także je usuwa. Sieci, wolumeny i rzeczywiste obrazy Dockera można również usunąć, jeśli użyjesz pewnych argumentów. Polecenie to:

docker-compose down

Jeśli zamierzasz usunąć woluminy, określasz, dodając -volumes. Na przykład:

docker-compose down --volumes

Jeśli zamierzasz usunąć obrazy, określasz, dodając -rmi wszystko lub -rmi lokalny. Na przykład:

docker-compose down --rmi all
docker-compose down --rmi local

Gdzie wszystko powoduje, że Docker Compose usuwa wszystkie obrazy i lokalny powoduje, że Docker Compose usuwa tylko obrazy bez niestandardowego tagu ustawionego w polu „obraz”.

Docker-utwórz pauzę

Istnieją scenariusze, w których musisz zawiesić kontener, bez zabijania go lub usuwania. Możesz to osiągnąć za pomocą polecenia Docker-compose pause. Wstrzymuje działania tego kontenera, dzięki czemu możesz je wznowić, kiedy chcesz. Polecenie to:

docker-compose pauza

Docker-compose cofnij pauzę

Polecenie docker-compose unpause jest przeciwieństwem polecenia docker-compose pause. Możesz go użyć do wznowienia zawieszonych procesów w wyniku użycia Docker-compose pause. Polecenie to:

docker-compose unpause

Docker-compose ps

Docker-compose ps wyświetla wszystkie kontenery utworzone z usług w pliku Docker-ComposeCom. To jest podobne do doker ps który zawiera listę wszystkich kontenerów działających na hoście docker. Jednak docker-compose ps jest specyficzne dla kontenerów z pliku Docker Compose. Polecenie to:

docker-compose ps

Łącząc to wszystko razem

Teraz, gdy znasz już niektóre kluczowe koncepcje związane z plikiem Docker Compose, połączmy to wszystko razem. Poniżej znajduje się przykładowy plik Docker-Compose dla aplikacji internetowej Python Django. Zobaczysz podział każdego wiersza w tym pliku i zobaczysz, co robią.

wersja: '3'
usługi:
db:
zdjęcie: postgres
sieć:
budować: .
polecenie: zarządzanie Pythonem.py runserver 0.0.0.0:8000
wolumeny:
- .:/kod
porty:
- „8000:8000”
zależy od:
- db

Krótka historia jest taka, że ​​za pomocą tego pliku Docker-Compose tworzona jest baza danych PostgreSQL i uruchamiany jest serwer django.

Długa historia to:

  1. Ten plik używa wersji 3 Docker-Compose.
  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 kontekstu i kluczy Dockerfile, oczekuje się, że plik Dockerfile zostanie nazwany „Dockerfile” zgodnie z konwencją.
  5. Polecenie, które zostanie uruchomione po uruchomieniu kontenera, jest zdefiniowane.
  6. Głośność i porty są zdefiniowane. Oba używają konwencji mapowania host:kontener.
  7. W przypadku woluminu bieżący katalog „.” jest mapowany do katalogu „/code” wewnątrz kontenera. Dzięki temu dane w kontenerze stają się trwałe, dzięki czemu nie są tracone przy każdym uruchomieniu kontenera.
  8. W przypadku portu port 8000 hosta jest mapowany na port 8000 kontenera. Zauważ, że aplikacja internetowa działa na porcie 8000. W związku z tym aplikacja internetowa jest dostępna na hoście za pośrednictwem tego portu.
  9. Wreszcie usługa sieciowa zależy od usługi db. W związku z tym usługa sieciowa uruchomi się dopiero po uruchomieniu kontenera db.
  10. Więcej na temat pliku Dockerfile dla aplikacji Django oraz pliku Docker Compose można znaleźć w dokumentacji.

Wniosek

Nie musisz być ekspertem od Dockera, aby korzystać z Docker Compose. Jako początkujący, który nie zamierza opanować tego narzędzia, dobrze jest nauczyć się tego, czego potrzebujesz w pojedynkę. W tym artykule poznałeś podstawy Docker Compose. Teraz rozumiesz, dlaczego potrzebne jest Docker Compose, złe porównania, jak skonfigurować plik konfiguracyjny Docker Compose i polecenia. Znajomość tych rzeczy jest ekscytująca, ale prawdziwa radość płynie z ich praktykowania. Czas zabrać się do pracy.

Gry Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
OpenRA to darmowy silnik gier strategicznych czasu rzeczywistego, który odtwarza wczesne gry Westwood, takie jak klasyczny Command & Conquer: Red Aler...
Gry Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Emulator Dolphin pozwala grać w wybrane gry Gamecube i Wii na komputerach osobistych z systemem Linux (PC). Będąc ogólnodostępnym emulatorem gier o o...
Gry Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Artykuł zawiera przewodnik dotyczący korzystania z silnika oszukującego GameConqueror w systemie Linux. Wielu użytkowników, którzy grają w gry w syste...