Přístavní dělník

Průvodce pro začátečníky v Docker Compose

Průvodce pro začátečníky v Docker Compose
Docker Compose je jedním z nejužitečnějších nástrojů pro vývojáře softwaru a správce systému. Mnoho úloh vyžaduje někoho se znalostí této technologie, takže Docker a Docker Compose jsou v prostoru DevOps horké. Není pochyb o tom, že znalost používání těchto technologií prospěje vaší kariéře v IT.

Pokud jste Docker Compose začátečník, ale máte nějaké znalosti Docker, tento článek je pro vás. Dozvíte se o:

Než se pustíte do šťavnatých částí tohoto článku, mělo by být úžasné malé pozadí této technologie.

Kontejnerizace se stala klíčovou součástí softwarové infrastruktury, a to platí pro velké, střední nebo malé projekty. Zatímco kontejnery nejsou nové, Docker je učinil populárními. U kontejnerů se problémy se závislostmi staly minulostí. Kontejnery také hrají obrovskou roli ve zvýšení efektivity architektury mikroslužeb. Softwarové aplikace jsou vyrobeny z menších služeb, takže je snadné mít tyto služby v kontejnerech a komunikovat.

Problémem v tom je, že bude spuštěno tolik kontejnerů. Taková, že jejich správa se stává složitou. To vytváří potřebu nástroje, který pomáhá spouštět více kontejnerů, což Docker Compose dělá. Na konci článku porozumíte základním konceptům Docker Compose a budete je moci také používat.

Co je Docker Compose?

Bez veškeré složitosti je Docker Compose nástroj, který vám umožní spravovat více kontejnerů Docker. Pamatujte na mikroslužby? Koncept rozdělení webové aplikace na různé služby? Tyto služby budou fungovat v jednotlivých kontejnerech, které je třeba spravovat.

Představte si, že webová aplikace obsahuje některé z těchto služeb:

V návaznosti na architekturu podobnou mikroslužbě budou tyto služby rozděleny a spuštěny v samostatných kontejnerech. Docker Compose usnadňuje správu všech těchto kontejnerů namísto jejich individuální správy. Je důležité si uvědomit, že Docker Compose explicitně nevytváří Docker obrázky. Úlohu vytváření obrazů provádí Docker prostřednictvím souboru Docker.

Populární srovnání

Je běžné mít mnoho řešení problému. Docker Compose řeší tento problém správy více kontejnerů. Výsledkem je často srovnání s jinými řešeními. Měli byste si uvědomit, že většina z těchto srovnání je nesprávná. I když často nejsou platné, je nejlepší se o nich dozvědět, protože vám pomůže lépe porozumět Docker Compose.

Dvě srovnání, o nichž se bude diskutovat, jsou:

Docker Compose vs Kubernetes

Kubernetes je často přirovnáván k Docker Compose. Podobnosti v obou nástrojích jsou ale drobné, s velkými odlišnostmi. Tyto technologie nejsou na stejné úrovni nebo měřítku. Porovnání obou nástrojů je tedy vyloženě špatné.

Kubernetes populárně známý jako k8s je open-source nástroj, který lze použít k automatizaci kontejnerů (není omezen na Docker). S k8s můžete nasadit a spravovat kontejnery a zajistit jejich škálování při různých zatíženích. Kubernetes zajišťuje, že kontejnery jsou odolné vůči chybám a fungují optimálně tím, že způsobí jejich samoléčení, které nedostanete od Docker Compose.

Kubernetes je výkonnější nástroj. Je vhodnější pro správu kontejnerů pro rozsáhlé aplikace ve výrobě.

Docker Compose vs Docker Swarm

Docker Compose se také často srovnává s Docker Swarm a je stejně špatný jako srovnání Kubernetes. Místo toho by měl být Docker Swarm srovnáván s Kubernetes.

Docker Swarm je open-source nástroj, který umožňuje provádět orchestraci kontejnerů stejně jako Kubernetes. Oba mají své klady a zápory, ale to není předmětem diskuse. Uděláte dobře, když víte, že oba jsou podobné a ani není alternativou k Docker Compose.

Instalace Docker Compose

Docker Compose je oficiální nástroj Docker, ale nepřichází s instalací Docker. Musíte jej tedy nainstalovat jako samostatný balíček. Proces instalace Docker Compose pro Windows a Mac je k dispozici na oficiálních stránkách.

Chcete-li nainstalovat Docker Compose na Ubuntu, můžete použít následující příkaz:

sudo apt-get install docker-compose

Chcete-li nainstalovat Docker Compose na jiné distribuce Linuxu, můžete použít curl. Jednoduše spusťte následující příkazy:

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

Pak:

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

První příkaz stáhne nejnovější verzi Docker Compose do adresáře vyhrazeného pro balíčky. Druhý nastavuje oprávnění souboru, takže je spustitelný.

Docker-Compose.yml soubor

Nebude strašně špatné říkat, že soubor Docker Compose je pro Docker Compose, co je Dockerfile pro Docker. Uvnitř souboru Docker Compose leží všechny pokyny, které Docker Compose dodržuje při správě kontejnerů. Zde definujete služby, které nakonec budou kontejnery. Rovněž definujete sítě a svazky, na kterých služby závisí.

Soubor Docker Compose používá syntaxi YAML a musíte jej uložit jako docker-compose.yml. Ve webové aplikaci můžete mít služby pro back-end, front-end, databázi a fronty zpráv. Tyto služby budou vyžadovat konkrétní závislosti. Závislosti, jako jsou sítě, porty, úložiště pro optimální provoz. Vše potřebné pro celou aplikaci bude definováno v souboru Docker Compose.

Abyste mohli napsat svůj soubor pro psaní, potřebujete základní znalost syntaxe YAML. Pokud to nejste obeznámeni, mělo by uchopení trvat méně než hodinu. Ve vašem souboru bude spousta párů klíč-hodnota nebo směrnic. Ty nejvyšší úrovně jsou:

Bude však probrána pouze verze a služby, protože můžete definovat další dvě ve směrnici o službách.

Verze

Při psaní souboru nejprve definujete verzi. V době psaní tohoto článku má Docker Compose pouze verze 1, 2 a 3. Není divu, že se jedná o doporučenou verzi, která se od starších verzí liší.

Můžete určit verzi, která se má použít pro Docker Compose v souboru, jak je vidět níže:

Služby

Klíč služby je pravděpodobně nejdůležitější klíč v souboru Docker Compose. Zde určíte kontejnery, které chcete vytvořit. V této části souboru je spousta možností a spousta kombinací pro konfiguraci kontejnerů. Zde je několik možností, které můžete definovat pod klíčem služby:

Ve zbytku této části se dozvíte, jak každá z těchto možností ovlivňuje kontejnery.

obraz

Tato možnost definuje, jaký obrázek používá služba. Používá stejnou konvenci, jakou používáte při načítání obrázku z Dockerhubu v souboru Dockerfile. Zde je příklad:

obrázek: postgres: nejnovější

Samotné používání souborů Dockerhub však není nijak omezeno. Můžete také vytvářet obrázky ze svého zařízení prostřednictvím souboru Docker Compose pomocí souboru Docker. K tomu můžete použít směrnice „build“, „context“ a „dockerfile“.

Zde je příklad:

stavět:
kontext: .
dockerfile: Dockerfile

„Kontext“ by měl obsahovat cestu k adresáři se souborem Docker. Pak „dockerfile“ obsahuje název souboru Dockerfile, který se má použít. Je běžné vždy pojmenovat soubory Docker jako „Dockerfile“, ale to dává příležitost použít něco jiného. Měli byste si uvědomit, že to není jediný způsob, jak použít obrázek prostřednictvím souboru Dockerfile.

Jméno_kontejneru

Docker přiřadí náhodné názvy kontejnerům. Ale možná budete chtít mít pro kontejnery vlastní názvy. Pomocí klíče „container_name“ můžete namísto náhodně generovaných názvů Dockers pojmenovat kontejnery.

Zde je příklad:

container_name: linuxhint-app

Je však jedna věc, na kterou byste měli být opatrní: nedávejte stejný název více službám. Názvy kontejnerů musí být jedinečné; Pokud tak učiníte, dojde k selhání služeb.

Restartujte

Softwarová infrastruktura je odsouzena k selhání. S vědomím toho je snazší plánovat zotavení z tohoto selhání. Existuje mnoho důvodů pro selhání kontejneru, takže klíč restartu říká kontejneru, aby se probudil nebo ne. Máte následující možnosti, ne, vždy, při selhání a pokud není zastaveno. Tyto možnosti naznačují, že kontejner se nikdy nerestartuje, vždy se restartuje, restartuje se pouze při selhání nebo pouze při zastavení.

Zde je příklad:

restart: vždy

Záleží na

Služby běží izolovaně. Služby ale prakticky nemohou dělat samy od sebe. Musí existovat závislost na jiných službách. Například služba back-endu webové aplikace bude záviset na databázích, službách ukládání do mezipaměti atd. Na klíč „depends_on“ můžete přidat závislosti.

Zde je příklad:

záleží na:
- db

To znamená, že Docker Compose spustí tyto služby před aktuální. Nezaručuje však, že jsou tyto služby připravené k použití. Jedinou zárukou je, že se nádoby spustí.

životní prostředí

Aplikace závisí na určitých proměnných. Z důvodu bezpečnosti a snadného použití je extrahujete z kódu a nastavíte jako proměnné prostředí. Příkladem takových proměnných jsou klíče API, hesla atd. Ty jsou běžné ve webových aplikacích. Všimněte si, že tento klíč funguje, pouze pokud v této službě neexistuje direktiva „build“. Proto předem vytvořte obrázek.

Podívejte se na toto:

životní prostředí:
API-KEY: 'the-api-key'
KONFIGURACE: „vývoj“
SESSION_SECRET: „tajemství“

Pokud máte v úmyslu použít direktivu „build“ bez ohledu na to, budete muset definovat proměnné prostředí v direktivě „args“. Směrnice „args“ je dílčí směrnicí „build“.

Zde je příklad:

stavět:
kontext: .
args:
api-key: 'the-api-key'
config: 'vývoj'
session_secret: 'tajemství'

Přístavy

Žádný kontejner nefunguje izolovaně, přestože běží odděleně od ostatních. Chcete-li poskytnout odkaz ke komunikaci s „vnějším světem“, musíte mapovat porty. Mapujete port kontejneru Docker na skutečný port hostitele. V Dockeru jste možná narazili na argument „-p“, který se používá k mapování portů. Direktiva portů funguje podobně jako argument „-p“.

porty:
- „5000: 8000“

Svazky

Kontejnery Docker nemají prostředky k trvalému ukládání dat, takže při restartu ztratí data. Se svazky to můžete obejít. Svazky umožňují vytvořit trvalé úložiště dat. Dělá to připojením adresáře z hostitele dockeru do adresáře kontejneru dockeru. Svazky můžete také nastavit jako služby nejvyšší úrovně.

Zde je příklad:

objemy:
- hostitel-adresář: / test / adresář

Při konfiguraci svazků je k dispozici mnoho možností, můžete si je prohlédnout.

Sítě

Sítě lze také vytvářet ve službách. Pomocí klíče sítě můžete nastavit síť pro jednotlivé služby. Zde můžete nastavit ovladač, který síť používá, pokud umožňuje protokol IPv6 atd. Můžete také nastavit sítě jako služby, stejně jako svazky.

Zde je příklad:

sítě:
- výchozí

Při konfiguraci sítí existuje mnoho možností, můžete si je prohlédnout.

Vstupní bod

Když spustíte kontejner, musíte často spustit určité příkazy. Pokud je například službou webová aplikace, musíte spustit server. Klíč vstupního bodu vám to umožní. Entrypoint funguje jako ENTRYPOINT v Dockerfile. Jediným rozdílem v tomto případě je, že vše, co zde definujete, přepíše konfigurace ENTRYPOINT v souboru Dockerfile.vstupní bod: běh baňky

Zde je příklad:

vstupní bod: běh baňky

Docker Compose Commands

Po vytvoření souboru Docker-Compose musíte spustit určité příkazy, aby Compose fungoval. V této části se dozvíte o některých hlavních příkazech Docker Compose. Oni jsou:

Docker-komponovat

Tento příkaz Docker-compose pomáhá vytvořit obraz, poté vytvoří a spustí Dockerovy kontejnery. Kontejnery pocházejí ze služeb uvedených v souboru pro psaní. Pokud jsou kontejnery již spuštěny a spustíte docker-compose up, znovu vytvoří kontejner. Příkaz je:

ukotvit-sestavit

Docker-compose start

Tento příkaz Docker-compose spustí Docker kontejnery, ale nevytváří obrázky ani nevytváří kontejnery. Spustí tedy kontejnery, pouze pokud byly vytvořeny dříve.

Docker-compose stop

Po vytvoření a spuštění kontejnerů budete často muset kontejnery zastavit. Zde se hodí příkaz Docker-compose stop. Tento příkaz v podstatě zastaví spuštěné služby, ale instalační kontejnery a sítě zůstanou nedotčené.
Příkaz je:

docker-compose stop

Docker-komponovat

Příkaz Docker-compose down také zastaví Dockerovy kontejnery jako příkaz stop. Ale jde to navíc. Docker-compose down, nejen zastaví kontejnery, ale také je odstraní. Sítě, svazky a skutečné obrázky Dockeru lze také odstranit, pokud použijete určité argumenty. Příkaz je:

docker-compose down

Pokud chcete odstranit svazky, určíte přidáním -volumes. Například:

docker-compose down --objemy

Pokud chcete odstranit obrázky, určíte přidáním -rmi všichni nebo -rmi místní. Například:

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

Kde Všechno způsobí, že Docker Compose odstraní všechny obrázky a místní způsobí, že Docker Compose odstraní pouze obrázky bez vlastní značky nastavené v poli „image“.

Pauza pro docker-compose

Existují scénáře, kdy musíte kontejner pozastavit, aniž byste jej zabili nebo odstranili. Toho můžete dosáhnout pomocí příkazu Docker-compose pause. Pozastavuje aktivity tohoto kontejneru, takže je můžete kdykoli obnovit. Příkaz je:

pauza docker-compose

Docker-compose unpause

Pauza docker-compose unpause je opakem příkazu docker-compose pause. Můžete jej použít k obnovení pozastavených procesů v důsledku použití pozastavení Docker-compose. Příkaz je:

docker-compose unpause

Docker-psát ps

Docker-compose ps vypíše všechny kontejnery vytvořené ze služeb v souboru Docker-Compose. Je to podobné jako docker ps který uvádí seznam všech kontejnerů běžících na hostiteli dockeru. Docker-compose ps je však specifický pro kontejnery ze souboru Docker Compose. Příkaz je:

docker-psát ps

Všechno dohromady

Nyní, když jste viděli některé klíčové pojmy za souborem Docker Compose, pojďme to všechno spojit. Níže je ukázkový soubor Docker-Compose pro webovou aplikaci Python Django. Uvidíte rozpis všech řádků v tomto souboru a uvidíte, co dělají.

verze: '3'
služby:
db:
obrázek: postgres
web:
stavět: .
příkaz: správa pythonu.py runserver 0.0.0.0: 8000
objemy:
- .:/kód
porty:
- „8000: 8000“
záleží na:
- db

Povídkou je, že s tímto souborem Docker-Compose se vytvoří databáze PostgreSQL a spustí se server django.

Dlouhý příběh je:

  1. Tento soubor používá verzi 3 Docker-Compose.
  2. Vytváří dvě služby. Databáze a webové služby.
  3. Služba db používá oficiální docker postgres obrázek.
  4. Webová služba vytváří vlastní obrázek z aktuálního adresáře. Protože nedefinuje kontext a klíče Dockerfile, očekává se, že Dockerfile bude podle konvence pojmenován „Dockerfile“.
  5. Je definován příkaz, který se spustí po spuštění kontejneru.
  6. Je definován objem a porty. Oba používají konvenci mapování hostitele: kontejner.
  7. Pro svazek aktuální adresář “.”Je namapováno na adresář“ / code ”uvnitř kontejneru. Díky tomu se data v kontejneru stanou trvalými, takže nedojde ke ztrátě při každém spuštění kontejneru.
  8. U portu je port hostitele 8000 mapován na port 8000 kontejneru. Všimněte si, že webová aplikace běží na portu 8000. Proto lze k webové aplikaci na hostiteli přistupovat prostřednictvím tohoto portu.
  9. Nakonec webová služba závisí na službě db. Proto se webová služba spustí až po spuštění kontejneru db.
  10. Další informace o souboru Docker pro aplikaci Django a souboru Docker Compose lze získat z dokumentace.

Závěr

Abyste mohli Docker Compose používat, nemusíte být odborníkem na Docker. Jako začátečník, který nemá v úmyslu tento nástroj ovládat, je dobré se naučit, co potřebujete, sám. V tomto článku jste se naučili základy Docker Compose. Nyní chápete, proč je potřeba Docker Compose, špatná srovnání, jak nastavit konfigurační soubor Docker Compose a také příkazy. Znát tyto věci je vzrušující, ale skutečná radost přichází z toho, když je procvičíte. Je čas jít do práce.

Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...
Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...