GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Rychlý průvodce používáním Docker Compose

Docker Compose je nástroj, který se nativně integruje s Dockerem a díky kterému je správa vícekontejnerových aplikací hračkou.

Výhody, které Docker Compose poskytuje, jsou četné, z nichž některé zahrnují:

  1. Snadná správa kontejnerových sítí: Propojení dvou kontejnerů přes síť Docker je v Docker Compose velmi jednoduché, stačí definovat síť a říct kontejnerům, aby se k ní připojily. Kromě toho může Docker Compose automaticky vytvářet a ničit sítě, když vytváříte a ničíte samotné kontejnery.
  2. Závislosti kontejneru: Máte kontejner Docker, který potřebuje další kontejner Docker, aby byl spuštěn a spuštěn, řekněme, databáze. Docker Compose vám umožňuje definovat závislosti pro kontejner, což vyžaduje, aby byly závislosti spuštěny, než se spustí cokoliv jiného.
  3. Reprodukovatelná nastavení: Protože nastavení kontejneru bude definováno ještě před vytvořením čehokoli, umožňuje to reprodukovatelnost nastavení, což usnadňuje jejich přenos do jiných systémů. I když byste to teoreticky mohli udělat v něčem, jako je Bash, může to způsobit, že věci budou méně flexibilní a budou se hůře přizpůsobovat změnám.

Instalace Docker Compose v systému Linux

Docker Compose je snadno dostupný ve většině úložišť distribucí.

Docker Compose můžete nainstalovat na Ubuntu a distribuce založené na Debianu pomocí následujícího příkazu:

sudo apt install docker-compose

Na Arch a Manjaro můžete použít:

sudo pacman -S docker-compose

Na Fedoře můžete použít příkaz dnf:

sudo dnf install docker-compose

Možná budete muset vynaložit trochu více úsilí na instalaci Docker Compose na CentOS.

U všech ostatních distribucí se vždy můžete podívat do instalační dokumentace, kde najdete informace o získání potřebných balíčků.

Vytvoření našeho prvního souboru Docker Compose

Tato příručka předpokládá, že jste již obeznámeni s nástrojem CLI dockeru a jste s ním spokojeni. Pokud ne, zvažte to, protože jinak pravděpodobně narazíte na spoustu jednoduchých škytavek.

Soubory Docker Compose jsou uloženy pod názvem docker-compose.yml a jsou automaticky nalezeny, když spustíte docker-compose příkazy ve stejném adresáři. Jeho syntaxe má podobu, uhodli jste, YAML.

Pokud máte zájem se o tom dozvědět, máme vyhrazený tutoriál o základech YAML.

Základy YAML Každý technik DevOps musí znát Jako inženýr DevOps budete hodně pracovat se soubory YAML. Vždy je dobré porozumět základní syntaxi YAML. Linux Handbook Rakesh Jain

Začneme souborem, který vytvoří instanci Nextcloud, a pak si projdeme, jak to vlastně udělal.

Nejprve musíte vytvořit soubor pro psaní. Vytvořte v systému prázdný adresář a vytvořte docker-compose.yml soubor.

Dále vyplňte soubor následujícím obsahem:

version: '3.5'
services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

networks:
  nextcloud:
    name: nextcloud_docker_network

Nyní vše, co musíte spustit, je docker-compose up -d a úspěšně byste nasadili Nextcloud s Dockerem.

Zde je přihlašovací stránka Nextcloud.

Pochopení našeho souboru Docker Compose File

Nyní, když jste viděli, že soubor skutečně funguje, pojďme se podívat na obsah souboru, abyste skutečně pochopili, co přesně dělá.

Značka 'version'

version: '3.5'

Za prvé, version štítek. Toto je pouze upřesnění verze formátu souboru Docker Compose, protože různé verze budou mít různou syntaxi. Obecně si to chcete ponechat na nejnovější verzi, ale není to nutné, což může být užitečné, pokud máte nějaké starší soubory.

Značka 'services'

services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

Dále uvidíte services štítek. Tím se spustí seznam všech aplikací, které se vytvoří při docker-compose up -d je spuštěn.

Poté spustíme výpis pro náš první kontejner, nextcloud_app . Slouží jako identifikátor aplikace, který lze použít pro jiné příkazy Docker Compose. Upozorňujeme, že toto není samotný název kontejneru – ten je uveden v další části.

Nyní můžete začít definovat vše o vašem kontejneru. Zde je stručný popis toho, co všechna pole znamenají, i když většina z nich by měla být samozřejmá, pokud se již v Dockeru orientujete:

  • container_name - Definuje název kontejneru. Ekvivalent k --name možnost.
  • image – Definuje, z jakého obrázku se má pro kontejner vytáhnout.
  • restart - Definuje zásady restartování pro kontejner. Ekvivalent --restart .
  • networks - Definuje síť, ke které se kontejner připojuje. Tato síť může být vytvořena nebo již může existovat. Tato hodnota slouží jako identifikátor pro docker-compose a není skutečným názvem sítě (ten je definován v networks sekce tagů).
  • ports - Definuje hostitelské porty, ke kterým se může kontejner připojit. Ekvivalent --publish .
  • volumes - Definuje objemy pro kontejner. Ekvivalent --volume .
  • environment - Definuje proměnné prostředí pro kontejner. Ekvivalent --env . Tato volba podporuje dva typy syntaxe. První je variable: value , což je to, co se zde používá. Druhá možnost, která může být známější, pokud jste zvyklí na docker Syntaxe CLI je - variable=value .
  • depends_on - Určuje závislosti kontejneru. To se používá k požadavku, aby se kontejner nespustil, dokud se nespustí jeho závislosti. To přijímá hodnoty z výpisů kontejneru. (Ne container_name !)

Značka 'networks'

networks:
  nextcloud:
    name: nextcloud_docker_network

Nyní se dostanete k networks štítek. Toto se používá k definování sítí, které jsme uvedli v části networks pro naše kontejnery.

Uvnitř networks v sekci services nejprve vypíšete identifikátor, který jste síti přidělili . Tady to byl nextcloud .

Dále definujete název sítě, který lze zobrazit pomocí docker network ls . Zde jsme to pojmenovali nextcloud_docker_network .

Pokud byste chtěli, aby se kontejnery připojily k síti, která již existovala, použili byste následující syntaxi nahrazující network_name s názvem sítě Docker:

networks:
  nextcloud:
    external: true
    name: network_name

A tady to je. To shrnuje celý soubor!

Soubor yml můžete pojmenovat jakkoli, ale pak budete muset zadat název souboru při použití příkazů docker-compose. Dodržováním tradice a pojmenováním docker-compose.yml jsou příkazy krátké.

Uzavření

Nyní znáte základy používání Docker Compose a výhody, které můžete jeho používáním získat. Nyní jste také na cestě k pochopení toho, co lidé dělají, když distribuují své kontejnery prostřednictvím souborů Compose.

Něco nefunguje nebo máte nějaké přetrvávající otázky? Můžete je zanechat v sekci komentářů níže.


Docker
  1. Spuštění PostgreSQL v Dockeru, Rychlý a praktický průvodce

  2. Co je nového v Docker Compose v2?

  3. Jak nainstalovat Docker na CentOS

  1. Nastavte Nextcloud s Redis pomocí Dockeru

  2. Nasaďte WordPress na Docker pomocí Ansible

  3. Nastavení názvu hostitele v Docker Compose

  1. Jak spustit Nginx v kontejneru Docker:Průvodce krok za krokem

  2. Nasaďte Nextcloud na Docker pomocí Ansible

  3. Jak používat Docker Compose