Docker Compose: Ein Anfängerleitfaden

Hallo da, zukünftige Docker-Meister! Ich freue mich, Ihr Guide auf dieser Reise in die Welt von Docker Compose zu sein. Als jemand, der seit Jahren Informatik unterrichtet, habe ich viele Schüler kämpfen sehen, wenn es um Containerisierungskonzepte geht. Aber keine Angst! Am Ende dieses Tutorials werden Sie Container wie ein Profi orchestrieren können.

Docker - Compose

Was ist Docker Compose?

Bevor wir eintauchen, lassen Sie uns mit den Grundlagen beginnen. Stellen Sie sich vor, Sie planen eine große Party (weil wer liebt keine gute Analogie?). Sie müssen das Essen, die Getränke, die Musik und die Dekoration koordinieren. Docker Compose ist wie Ihr Partyplanungstool, aber für Container!

In technischen Begriffen ist Docker Compose ein Werkzeug zur Definition und Ausführung von mehrteiligen Docker-Anwendungen. Es ermöglicht Ihnen, eine YAML-Datei zu verwenden, um die Dienste, Netzwerke und Volumes Ihrer Anwendung zu konfigurieren, und dann alle Dienste aus Ihrer Konfiguration mit einem einzigen Befehl zu erstellen und zu starten.

Docker Compose - Installation

Nun, lassen Sie uns Docker Compose auf Ihrem System installieren. Der Vorgang ist so einfach wie ein Kuchen (mmm... Kuchen).

Für Windows- und Mac-Benutzer

Wenn Sie bereits Docker Desktop installiert haben, Glückwunsch! Sie haben bereits Docker Compose. Es kommt mit der Installation zusammen. Sie können zum nächsten Abschnitt springen und einen freudigen Tanz machen.

Für Linux-Benutzer

Für unsere Linux-Freunde müssen Sie Docker Compose separately installieren. Hier ist, wie:

  1. Laden Sie die aktuelle stabile Version von Docker Compose herunter:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.韦申可执行权限给二进制文件:

sudo chmod +x /usr/local/bin/docker-compose
  1. Überprüfen Sie die Installation:
docker-compose --version

Wenn Sie die Versionsnummer sehen, sind Sie bereit!

Erstellen Ihrer ersten Docker-Compose-Datei

Jetzt, da wir Docker Compose installiert haben, lassen Sie uns unsere erste docker-compose.yml-Datei erstellen. Diese Datei ist wie das Rezept für Ihre Anwendung - sie tells Docker, welche Zutaten (Dienste) Sie benötigen und wie man sie zubereitet.

Lassen Sie uns eine einfache Webanwendung mit Python Flask und Redis erstellen. Machen Sie sich keine Sorgen, wenn Sie mit diesen Technologien nicht vertraut sind - wir werden es einfach halten!

Erstellen Sie ein neues Verzeichnis für Ihr Projekt und navigieren Sie hinein:

mkdir my_first_compose_project
cd my_first_compose_project

Jetzt erstellen wir unsere docker-compose.yml-Datei:

version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"

Lassen Sie uns das aufschlüsseln:

  • version: '3': Dies gibt die Version des Docker Compose-Dateiformats an, das wir verwenden.
  • services: Dieser Abschnitt definiert die Container, die wir ausführen möchten.
  • web: Dies ist unser Flask-Anwendungsdienst.
  • build: .: Dies tells Docker, ein Image aus einer Dockerfile im aktuellen Verzeichnis zu erstellen.
  • ports: - "5000:5000": Dies mappt Port 5000 auf dem Host zu Port 5000 im Container.
  • redis: Dies ist unser Redis-Dienst.
  • image: "redis:alpine": Dies tells Docker, das offizielle Redis-Image von Docker Hub zu verwenden.

Erstellen der Flask-Anwendung

Jetzt erstellen wir eine einfache Flask-Anwendung. Erstellen Sie eine Datei namens app.py:

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
redis.incr('hits')
return f'Hello World! I have been seen {redis.get("hits").decode("utf-8")} times.'

if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)

Diese einfache App erhöht einen Zähler in Redis jedes Mal, wenn die Seite besucht wird.

Erstellen der Dockerfile

Als nächstes müssen wir eine Dockerfile erstellen, um unsere Flask-Anwendung zu erstellen. Erstellen Sie eine Datei namens Dockerfile:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

Diese Dockerfile:

  1. Startet vom Python 3.7 Alpine-Image
  2. Setzt das Arbeitsverzeichnis auf /code
  3. Setzt Umgebungsvariablen für Flask
  4. Installiert notwendige Abhängigkeiten
  5. Kopiert und installiert Python-Anforderungen
  6. Exponiert Port 5000
  7. Kopiert das aktuelle Verzeichnis in den Container
  8. Setzt den Befehl, um Flask zu starten

Erstellen der Anforderungen-Datei

Zuletzt müssen wir unsere Python-Abhängigkeiten angeben. Erstellen Sie eine Datei namens requirements.txt:

flask
redis

Ausführen Ihrer Docker Compose-Anwendung

Jetzt comes der spannende Teil - die Ausführung Ihrer Anwendung! In Ihrem Terminal führen Sie aus:

docker-compose up

Sie sollten sehen, dass Docker Compose Ihre Images erstellt und Ihre Dienste startet. Wenn es fertig ist, öffnen Sie einen Webbrowser und gehen Sie zu http://localhost:5000. Sie sollten Ihre "Hello World"-Nachricht sehen, und der Zähler sollte erhöht werden, wenn Sie die Seite neu laden.

Docker Compose-Befehle

Hier ist eine praktische Tabelle einiger gängiger Docker Compose-Befehle:

Befehl Beschreibung
docker-compose up Erstellen und starten von Containern
docker-compose down Stoppen und Entfernen von Containern, Netzwerken, Images und Volumes
docker-compose ps Auflisten von Containern
docker-compose logs Anzeigen der Ausgabe von Containern
docker-compose build Erstellen oder Neuerstellen von Diensten
docker-compose start Starten von Diensten
docker-compose stop Stoppen von Diensten

Schlussfolgerung

Glückwunsch! Sie haben gerade Ihre erste mehrteilige Anwendung mit Docker Compose erstellt und ausgeführt. Wir haben nur die Oberfläche dessen angerissen, was Docker Compose leisten kann, aber ich hoffe, dieses Tutorial hat Ihnen eine solide Grundlage zum Aufbauen gegeben.

Denken Sie daran, das Lernen von Docker und Containerisierung ist wie das Kochen lernen - es erfordert Übung, aber wenn Sie den Dreh raus haben, werden Sie in kürzester Zeit komplexe, mehrteilige Rezepte zaubern!

Viel Spaß beim Komponieren, zukünftige Docker-Köche!

Credits: Image by storyset