GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Eine Kurzanleitung zur Verwendung von Docker Compose

Docker Compose ist ein Tool, das sich nativ in Docker integriert und die Verwaltung von Multi-Container-Anwendungen zum Kinderspiel macht.

Die Vorteile von Docker Compose sind zahlreich, darunter einige:

  1. Containernetzwerke einfach verwalten: Das Verbinden von zwei Containern über ein Docker-Netzwerk ist in Docker Compose supereinfach, da es so einfach ist, ein Netzwerk zu definieren und den Containern zu sagen, dass sie sich damit verbinden sollen. Darüber hinaus kann Docker Compose automatisch Netzwerke erstellen und zerstören, während Sie die Container selbst erstellen und zerstören.
  2. Container-Abhängigkeiten: Sie haben einen Docker-Container, der einen anderen Docker-Container benötigt, um beispielsweise eine Datenbank auszuführen. Docker Compose ermöglicht es Ihnen, Abhängigkeiten für einen Container zu definieren, wobei die Abhängigkeiten betriebsbereit sein müssen, bevor irgendetwas anderes gestartet wird.
  3. Reproduzierbare Einstellungen: Da das Container-Setup definiert wird, bevor überhaupt etwas erstellt wird, ermöglicht dies eine Reproduzierbarkeit von Setups und erleichtert die Übertragung auf andere Systeme. Während Sie dies theoretisch in etwas wie Bash tun könnten, kann es die Dinge weniger flexibel und schwieriger an Änderungen anzupassen.

Installieren von Docker Compose unter Linux

Docker Compose ist in den meisten Distributions-Repositories verfügbar.

Sie können Docker Compose auf Ubuntu- und Debian-basierten Distributionen mit dem folgenden Befehl installieren:

sudo apt install docker-compose

Auf Arch und Manjaro können Sie Folgendes verwenden:

sudo pacman -S docker-compose

Auf Fedora können Sie den dnf-Befehl verwenden:

sudo dnf install docker-compose

Möglicherweise müssen Sie sich bei der Installation von Docker Compose unter CentOS etwas mehr Mühe geben.

Für alle anderen Distributionen können Sie jederzeit in der Installationsdokumentation nach Informationen zum Erhalt der erforderlichen Pakete suchen.

Erstellen unserer ersten Docker-Compose-Datei

In diesem Handbuch wird davon ausgegangen, dass Sie bereits mit dem Docker-CLI-Tool vertraut und vertraut sind. Wenn dies nicht der Fall ist, ziehen Sie in Betracht, dies zu tun, da Sie sonst wahrscheinlich auf ein paar einfache Schluckaufe stoßen werden.

Docker Compose-Dateien werden unter dem Namen docker-compose.yml gespeichert , und werden automatisch gefunden, wenn Sie docker-compose ausführen Befehle im selben Verzeichnis. Seine Syntax hat die Form von, Sie haben es erraten, YAML.

Wir haben ein spezielles Tutorial zu den YAML-Grundlagen, falls Sie daran interessiert sind.

YAML-Grundlagen, die jeder DevOps-Ingenieur kennen mussAls DevOps-Ingenieur haben Sie viel mit YAML-Dateien zu tun. Es ist immer eine gute Idee, die grundlegende YAML-Syntax zu verstehen. Linux-HandbuchRakesh Jain

Wir beginnen mit einer Datei, die eine Nextcloud-Instanz erstellt, und gehen dann darauf ein, wie sie tatsächlich das getan hat, was sie getan hat.

Das Wichtigste zuerst, Sie müssen die Erstellungsdatei erstellen. Erstellen Sie ein leeres Verzeichnis auf Ihrem System und erstellen Sie die docker-compose.yml Datei.

Als nächstes füllen Sie die Datei mit folgendem Inhalt:

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

Jetzt müssen Sie nur noch docker-compose up -d ausführen , und Sie hätten Nextcloud erfolgreich mit Docker bereitgestellt.

Hier ist die Anmeldeseite von Nextcloud.

Unsere Docker-Compose-Datei verstehen

Nachdem Sie nun gesehen haben, dass die Datei tatsächlich funktioniert, lassen Sie uns den Inhalt der Datei durchgehen, damit Sie tatsächlich verstehen, was genau sie tut.

Das 'version'-Tag

version: '3.5'

Das Wichtigste zuerst, die version Schild. Dies gibt nur die Version des Docker Compose-Dateiformats an, da verschiedene Versionen unterschiedliche Syntax haben. Im Allgemeinen möchten Sie dies auf der neuesten Version halten, aber das muss nicht sein, was hilfreich sein kann, wenn Sie einige ältere Dateien haben.

Das 'services'-Tag

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'

Als nächstes sehen Sie die services Schild. Dies startet die Liste für alle Anwendungen, die erstellt werden, wenn docker-compose up -d wird ausgeführt.

Danach starten wir das Listing für unseren ersten Container, nextcloud_app . Dies dient als Kennung für die App, die von anderen Docker Compose-Befehlen verwendet werden kann. Beachten Sie, dass dies nicht ist der Name des Containers selbst - das wird im nächsten Teil angegeben.

Jetzt fangen Sie an, alles über Ihren Container zu definieren. Hier ist eine Zusammenfassung der Bedeutung aller Felder, obwohl die meisten selbsterklärend sein sollten, wenn Sie sich bereits mit Docker auskennen:

  • container_name - Definiert den Namen des Containers. Äquivalent zu --name Möglichkeit.
  • image - Definiert, welches Image für den Container gezogen werden soll.
  • restart – Definiert die Neustartrichtlinie für den Container. Entspricht --restart .
  • networks - Definiert ein Netzwerk, mit dem sich der Container verbindet. Dieses Netzwerk kann erstellt werden oder bereits existieren. Dieser Wert dient als Kennung für docker-compose und ist nicht der tatsächliche Name des Netzwerks (das in den networks definiert ist Tag-Abschnitt).
  • ports - Definiert Host-Ports, mit denen der Container eine Verbindung herstellen kann. Entspricht --publish .
  • volumes - Definiert Volumen für den Container. Äquivalent zu --volume .
  • environment - Definiert Umgebungsvariablen für den Container. Entspricht --env . Diese Option unterstützt zwei Syntaxtypen. Die erste ist variable: value , was hier verwendet wird. Die andere Option, die vielleicht bekannter ist, wenn Sie an docker gewöhnt sind CLI-Syntax, ist - variable=value .
  • depends_on ab - Gibt Containerabhängigkeiten an. Dies wird verwendet, um zu verlangen, dass ein Container nicht gestartet wird, bis seine Abhängigkeiten dies getan haben. Dies akzeptiert Werte aus den Containerlisten. (Nicht container_name !)

Das 'networks'-Tag

networks:
  nextcloud:
    name: nextcloud_docker_network

Nun gelangen Sie zu den networks Schild. Dies wird verwendet, um die Netzwerke zu definieren, die wir unter networks aufgelistet haben für unsere Container.

Innerhalb der networks listen Sie zunächst die Kennung auf, die Sie dem Netzwerk unter services gegeben haben . Hier war das nextcloud .

Als nächstes definieren Sie den Namen des Netzwerks, das mit docker network ls gesehen werden kann . Hier haben wir es nextcloud_docker_network genannt .

Wenn Sie möchten, dass die Container einem bereits bestehenden Netzwerk beitreten, würden Sie die folgende Syntax verwenden und dabei network_name ersetzen mit dem Namen des Docker-Netzwerks:

networks:
  nextcloud:
    external: true
    name: network_name

Und los geht's. Das fasst die ganze Datei zusammen!

Sie können die yml-Datei beliebig benennen, aber dann müssen Sie den Dateinamen angeben, wenn Sie die docker-compose-Befehle verwenden. Die Beibehaltung der Tradition und die Benennung docker-compose.yml halten die Befehle kurz.

Abschluss

Jetzt kennen Sie die Grundlagen der Verwendung von Docker Compose und die Vorteile, die Sie durch seine Verwendung erzielen können. Sie sind jetzt auch auf dem Weg zu verstehen, was Leute tun, wenn sie ihre Container über Compose-Dateien verteilen.

Etwas funktioniert nicht oder Sie haben noch Fragen? Sie können sie gerne im Kommentarbereich unten hinterlassen.


Docker
  1. Richten Sie Nextcloud mit Redis mit Docker ein

  2. Stellen Sie WordPress auf Docker mit Ansible bereit

  3. Stellen Sie Nextcloud auf Docker mit Ansible bereit

  4. So verwenden Sie Docker Compose

  5. Was ist neu in Docker Compose v2?

Von Docker Compose zu Kubernetes mit Podman

Installieren Sie Navidrome mit Docker

Alles, was Sie über die Verwendung von Docker Compose wissen müssen

So führen Sie Jenkins in Docker mit Docker Compose with Volumes aus

So installieren Sie Docker Compose auf Ubuntu

Verwenden von Docker Desktop zum Verwalten eines Containers