Voraussichtliche Lesedauer: 6 Minuten

Docker hat die Art und Weise, wie Entwickler Software entwickeln, testen und bereitstellen, revolutioniert. In diesem Artikel vergleichen wir zwei grundlegende Werkzeuge, die bei der Verwendung von Docker zum Einsatz kommen: Docker Run und Docker Compose. Wir verwenden Portainer und Docker Netzwerke als Beispiele, um ihre Anwendung zu veranschaulichen und die Vorteile von Docker Compose, insbesondere im Hinblick auf Infrastructure as Code, zu diskutieren.

Was ist Docker Run?

Docker Run ist ein Befehl, der verwendet wird, um einen Docker-Container aus einem Docker-Image zu starten. Es ist der direkteste Weg, einen Container zu starten und zu verwalten. Zum Beispiel:

docker run -d -p 80:80 docker/getting-started

Dieser Befehl startet einen Container im Hintergrund und öffnet Port 80 auf dem Host, um auf die App zuzugreifen.

Was ist Docker Compose?

Docker Compose ist ein Tool, das die Definition und den Betrieb von Multi-Container Docker-Anwendungen erleichtert. Mit einer YAML-Datei können Sie Dienste, Netzwerke und Volumes konfigurieren und dann alle Dienste mit einem einzigen Befehl starten:

version: '3.8'
services:
  web:
    image: nginx
    ports:
     - "80:80"

Docker Run vs. Docker Compose: Warum Docker Compose die bessere Wahl ist

Docker Compose bietet im Vergleich zu Docker Run mehrere Vorteile:

  • Vereinfachte Konfiguration: Docker Compose erlaubt es dir, deine gesamte Anwendungsstruktur in einer einzigen Datei zu definieren, was Fehler minimiert und die Wiederverwendbarkeit erhöht.
  • Einfache Skalierung: Mit Docker Compose kannst du leicht die Anzahl der Container für jeden Dienst erhöhen oder verringern.
  • Entwicklerfreundlichkeit: Entwickler können mit einem einzigen Befehl komplette Umgebungen hochfahren und herunterfahren, was den Entwicklungsprozess beschleunigt.

Anwendungsbeispiel: Portainer mit Docker Compose einrichten

Portainer ist ein leichtgewichtiger Management-UI, der es Ihnen ermöglicht, Ihre Docker-Umgebungen einfach zu verwalten. Hier ist eine Schritt-für-Schritt-Anleitung, wie du Portainer mit Docker Compose einrichten kannst:

Erstellen einer docker-compose.yml Datei:

version: '3'
services:
  portainer:
    image: portainer/portainer-ce
    ports:
      - "9000:9000"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "portainer_data:/data"
volumes:
  portainer_data:

Starten von Portainer:

docker-compose up -d

Nach dem Starten kannst du auf Portainer über http://<IP-deines-Servers>:9000 zugreifen und beginnen deine Docker-Container zu verwalten. Mehr zur Einrichtung von Portainer findest du auf dem vorherigen Artikel Portainer einfach einrichten: Meistern von Docker & Kubernetes.

Docker Netzwerke und deren Vorteile

Was sind Docker Netzwerke?

Bevor du dich mit externen und internen Netzwerken beschäftigst, solltest du verstehen, was Docker Netzwerke überhaupt sind. Ein Docker Netzwerk ermöglicht es Containern, miteinander und mit dem Host zu kommunizieren. Docker verwaltet diese Netzwerke und bietet dir verschiedene Netzwerk-Treiber, die spezifische Isolations- und Netzwerkeigenschaften bieten.

Interne Netzwerke: Sicherheit und Isolation

Erstelle interne Netzwerke, wenn deine Container untereinander kommunizieren müssen, ohne von der äußeren Welt erreicht zu werden. Dies ist besonders nützlich, wenn du empfindliche Daten verarbeitest oder Dienste betreibst, die nicht öffentlich exponiert sein sollen.

In deiner docker-compose.yml definierst du ein internes Netzwerk einfach durch Hinzufügen des Schlüssels internal: true unter der Netzwerkspezifikation. Hier ein Beispiel:

version: '3'
services:
  portainer:
    image: portainer/portainer-ce
    networks:
      - backend

networks:
  backend:
    internal: true

Ohne die Angabe von internal: true ist es ebenfalls ein internes Netzwerk, was auf dem Ordner basiert, in dem die docker-compose.yml liegt. In diesem Setup kann der Service portainer ausschließlich auf das interne Netzwerk backend zugreifen. Keine externe Kommunikation ist möglich. Andere Container, die sich ebenfalls in dem Netzwerk befinden, können auf den Container zugreifen und vice versa.

Externe Netzwerke: Verbindung mit der Außenwelt

Manchmal müssen deine Container mit externen Netzwerken oder Services kommunizieren. Vielleicht greift deine Anwendung auf eine externe Datenbank zu oder muss Dienste im Internet erreichen. Hierfür richtest du ein externes Netzwerk ein. In einem Heimserver Setup ist dies zu bevorzugen, da die Wartbarkeit und Konfiguration wesentlich simpler ist, wenn alle Container sich untereinander kennen und aufeinander zugreifen können.

Ein externes Netzwerk in Docker Compose wird nicht direkt in der Compose-Datei erstellt. Stattdessen definierst du es vorab mit Docker CLI und referenzierst es dann in deiner Compose-Datei:

docker network create unraid-ext

Und in deiner docker-compose.yml:

version: '3'
services:
  portainer:
    image: portainer
    networks:
      - unraid-ext

networks:
  unraid-ext:
    external: true

Mit dieser Konfiguration kann der portainer Service über das externe Netzwerk unraid-ext kommunizieren, was Verbindungen außerhalb deines Docker Hosts ermöglicht.

Best Practices für Netzwerke in Docker Compose

  • Isoliere Produktionsumgebungen: Nutze interne Netzwerke, um deine Produktionsumgebungen zu isolieren und schützen.
  • Vermeide Netzwerkkonflikte: Achte darauf, Namen von externen Netzwerken eindeutig zu wählen, um Konflikte zu vermeiden.
  • Monitor deine Netzwerke: Überwache den Netzwerkverkehr, um ungewöhnliche Aktivitäten schnell zu erkennen.

Durch das Verständnis und die korrekte Anwendung von internen und externen Netzwerken in Docker Compose kannst du die Sicherheit und Effizienz deiner Container-Anwendungen erheblich verbessern. Nutze diese Tools weise, um deine Entwicklungen sicher und effektiv zu gestalten!

Umsetzung im YouTube-Video

Fazit

Fassen wir zusammen, wie Docker die Softwareentwicklung verändert hat und warum Docker Compose oft die bessere Wahl gegenüber Docker Run ist, besonders wenn du komplexe Anwendungen effizient verwalten möchtest. Docker Compose erleichtert dir nicht nur das Leben durch die Vereinfachung der Konfiguration deiner Dienste in einer einzigen YAML-Datei, sondern steigert auch die Skalierbarkeit und Entwicklerfreundlichkeit deiner Projekte. Du kannst Umgebungen mit einem einzigen Befehl hoch- und herunterfahren, was die Entwicklung beschleunigt und die Konsistenz sichert.

Setze Docker Netzwerke strategisch ein, um die Kommunikation deiner Container optimal zu gestalten. Mit internen Netzwerken schützt du sensible Daten und sorgst für eine sichere Umgebung, während externe Netzwerke die Verbindung deiner Anwendungen mit der Außenwelt ermöglichen. Denke daran, die Netzwerke sorgfältig zu planen und zu überwachen, um Konflikte und Sicherheitsrisiken zu minimieren. Im Heimnetzwerk reicht ein externes Netzwerk oftmals aus.

Insgesamt bietet Docker, insbesondere durch Docker Compose, eine robuste Plattform für das Management deiner Anwendungen. Nutze die Möglichkeiten von Docker Compose voll aus, um deine Entwicklungsprozesse zu optimieren oder deine Anwendungen effizient und sicher zu betreiben.

Die Anzeige der Produkte wurde mit dem affiliate-toolkit WordPress Plugin umgesetzt.
Kategorien: Selfhosted Server

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

de_DE