Detaillierte Erläuterung der Bereitstellung und grundlegenden Verwendung von Docker Compose

Detaillierte Erläuterung der Bereitstellung und grundlegenden Verwendung von Docker Compose

1. Docker Compose Übersicht

Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. Mit Compose verwenden Sie YAML-Dateien, um die Dienste Ihrer Anwendung zu konfigurieren. Anschließend können Sie mit einem einzigen Befehl alle Dienste aus der Konfiguration erstellen und starten.

Compose funktioniert in allen Umgebungen: Produktion, Staging, Entwicklung, Test und CI-Workflows.

Die Verwendung von Compose erfolgt grundsätzlich in drei Schritten:

  1. Definieren Sie Ihre Anwendungsumgebung in einer Docker-Datei, damit sie überall reproduziert werden kann.
  2. Definieren Sie die Dienste, aus denen Ihre Anwendung besteht, in docker-compose.yml, damit sie in isolierten Umgebungen zusammen ausgeführt werden können.
  3. Führen Sie docker-compose up und Compose start aus und führen Sie die gesamte Anwendung aus.

Ein Beispiel für das Format docker-compose.yml sieht wie folgt aus:

Version: '3'
Leistungen:
 Webseite:
  bauen: .
  Häfen:
  - "5000:5000"
  Bände:
  - .:/Code
  -logvolume01:/var/log
  Links:
  - Redis
 Redis:
  Bild: Redis
Bände:
 logvolume01: {}

Compose verfügt über Befehle zum Verwalten des gesamten Lebenszyklus Ihrer Anwendung:

  • Starten, Stoppen und Neuerstellen von Diensten
  • Den Status laufender Dienste anzeigen
  • Streaming-Protokollausgabe von laufenden Diensten
  • Führen Sie einen einmaligen Befehl für einen Dienst aus

2. Docker Compose Installation

2.1 Binärer Download und Installation

 root@docker01:~# sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
root@docker01:~# sudo chmod +x /usr/local/bin/docker-compose

2.2 Installation mit pip (empfohlen)

root@docker01:~# apt-get -y install python
root@docker01:~# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
root@docker01:~# python get-pip.py #PIP installieren
root@docker01:~# pip install docker-compose #Docker Compose installieren
 root@docker01:~# docker-compose version #Installation überprüfen

Drei Docker Compose-Beispiele

3.1 Erstellen der Anwendung

root@docker01:~# mkdir composetest #Docker Compose-Verzeichnis erstellenroot@docker01:~# cd composetest/
root@docker01:~/composetest# vi app.py

Tipp: Verwenden Sie Python, um eine einfache Anwendung zu erstellen. Konkrete Anwendungsinhalte finden Sie im offiziellen Beispiel.
https://docs.docker.com/compose/gettingstarted/#step-1-setup

3.2 Dockerfile erstellen

root@docker01:~/composetest# vi Dockerfile #Verwenden Sie Dockerfile, um das Image zu erstellen FROM python:3.4-alpine
RUN mkdir /root/.pip #Pip-Quellkonfigurationsverzeichnis erstellen ADD pip.conf /root/.pip/pip.conf #Inländische Pip-Quelle zum zu erstellenden Image hinzufügen ADD ./code
ARBEITSVERZEICHNIS /code
RUN pip install -r requirements.txt #Verwenden Sie pip, um gemäß der Dateiliste CMD ["python", "app.py"] zu installieren.

Tipp: Informationen zu den oben genannten Dockerfile-bezogenen Befehlen finden Sie unter „004.Docker Image Management“.

root@docker01:~/composetest# vi requirements.txt #Datei mit einer Liste der Installationssoftware erstellen flask
Redis
root@docker01:~/composetest# vi pip.conf #Erstellen Sie eine Datei basierend auf der inländischen Pip-Quelle [global]
Index-URL = https://mirrors.aliyun.com/pypi/simple/
[installieren]
trusted-host=mirrors.aliyun.com

Dockerfile erklärt:

  1. Erstellen Sie das Image ausgehend vom Python 3.4-Image.
  2. Erstellen Sie ein Pip-Konfigurationsverzeichnis.
  3. Fügen Sie die inländische Pip-Quellkonfigurationsdatei zum Pfad in /root/.pip/ in Ihrem Image hinzu.
  4. Fügen Sie das aktuelle Verzeichnis . zum Pfad im /code-Image hinzu.
  5. Legen Sie das Arbeitsverzeichnis auf /code fest.
  6. Installieren Sie Python-bezogene Pakete.
  7. Legen Sie den Standardbefehl des Containers auf python app.py fest.

3.3 Erstellen von Diensten mit Docker Compose

root@docker01:~/composetest# vi docker-compose.yml
Version: '3'
Leistungen:
 Webseite:
  bauen: .
  Häfen:
   - "5000:5000"
 Redis:
  Bild: „redis:alpine“

Docker Compose erklärt:

Diese Compose-Datei definiert zwei Dienste: Web und Redis.

Webdienste:

  • Verwenden Sie das aus der Docker-Datei im aktuellen Verzeichnis erstellte Image.
  • Leiten Sie den freigegebenen Port 5000 des Containers an Port 5000 des Hosts weiter. Das heißt, es wird der Standardport 5000 des Flask-Webservers verwendet.

Redis-Dienst:

Verwenden Sie das öffentliche Redis-Image, das vom Docker Hub heruntergeladen wurde.

root@docker01:~/composetest# docker-compose up -d #Mit dem Erstellen beginnen

Vier Überprüfungsbestätigungen

Browserzugriff: http://172.24.8.111:5000/

root@docker01:~/composetest# docker-compose ps
root@docker01:~/composetest# docker ps 

 root@docker01:~/composetest# Docker-Image ls 


Hinweis:

Die mit Docker Compose erstellte Containernamenregel lautet: [Verzeichnis, in dem sich der Build befindet]_[Im YML-Build-File definierter Dienstname]_[Startsequenznummer des Containers].
Die Benennungsregel des mit Docker Compose erstellten Images lautet: [Verzeichnis, in dem sich der Build befindet]_[Dienstname, der durch die YML-Build-Datei definiert ist], und das Tag ist „latest“.

Fünf-Montage-Volumen-Konstruktion

root@docker01:~/composetest# vi docker-compose.yml
Version: '3'
Leistungen:
 Webseite:
  bauen: .
  Häfen:
   - "5000:5000"
  Bände:
   - .:/Code
 Redis:
  Bild: „redis:alpine“
root@docker01:~/composetest# docker-compose up -d #Erneut erstellenroot@docker01:~/composetest# vi app.py
…
return 'Hallo Docker! Ich wurde {} Mal gesehen.\n'.format(Anzahl)
…

Browserzugriff: http://172.24.8.111:5000/


Tipp: Nachdem Sie ein lokales Volume in einen Container eingebunden haben, können Sie lokale Dateien schnell ändern und so den Container dynamisch ändern, ohne das Image neu erstellen zu müssen.

6. Andere allgemeine Befehle von Docker Compose

docker-compose up -d: führt den Dienst im Hintergrund aus;
docker-compose ps: die aktuell ausgeführten Container anzeigen;
docker-compose run: Führt einen einmaligen Befehl aus, z. B. docker-compose run web env. 

docker-compose stop: Stoppen Sie den Dienst, z. B. docker-compose stop web

Tipp: Docker-Compose verwendet den Dienstnamen in YAML als Parameter, nicht den Containernamen oder die ID.

docker-compose down --volumes: Container vollständig löschen und die vom Container verwendeten Datenvolumes löschen.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Beispiels eines PHP-Projekts zur Docker-Compose-Bereitstellung
  • Docker-Compose - Bereitstellung der chinesischen Gitlab-Version per Mausklick - Methodenschritte
  • Detaillierte Erklärung der Softwarekonfiguration mit Docker-Compose unter Linux
  • So stellen Sie Gitlab mit Docker-Compose bereit
  • Eine kurze Analyse des Problems, dass MySQL bei der Bereitstellung mit Docker-Compose nicht zugänglich ist
  • Detailliertes Tutorial zur Docker-Compose-Bereitstellung und Konfiguration von Jenkins

<<:  Einführung in die allgemeine API-Verwendung von Vue3

>>:  Detaillierte Erläuterung der vier Transaktionsisolationsebenen in MySQL

Artikel empfehlen

CSS-Pseudoklasse: empty makes me shine (Beispielcode)

Jeder, der meine Artikel in letzter Zeit gelesen ...

Lösung für das Problem des MySQL-Threads beim Öffnen von Tabellen

Problembeschreibung Vor kurzem gab es einen MySQL...

Detaillierte Erklärung verschiedener HTTP-Rückgabestatuscodes

Wenn an Ihren Server eine Anforderung zum Anzeige...

Detaillierte Erklärung zu React Hooks

Inhaltsverzeichnis Was sind Hooks? Klassenkompone...

Detaillierte Erklärung des Rewrite-Moduls von Nginx

Das Umschreibmodul ist das Modul ngx_http_rewrite...

Details zur Datenanzeige der Vue3-Listenschnittstelle

Inhaltsverzeichnis 1. Beispiel für die Anzeige de...

LINUX Prüft, ob der Port belegt ist

Ich konnte nie herausfinden, ob der Port belegt i...