Docker Container-Bereitstellung auf internen Hosts

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses umfassende Tutorial führt Sie durch den Prozess der Bereitstellung von Docker-Containern auf Ihren internen Hosts. Ob Sie Docker-Neuling oder erfahrener Benutzer sind, Sie lernen, wie Sie Docker installieren, Container erstellen und konfigurieren sowie diese effektiv innerhalb der Infrastruktur Ihres Unternehmens verwalten. Am Ende dieses Leitfadens verfügen Sie über das Wissen und die Fähigkeiten, die Leistungsfähigkeit von Docker zu nutzen, um die Bereitstellung und Verwaltung Ihrer Anwendungen auf internen Docker-Hosts zu optimieren.

Docker-Container verstehen

Docker ist eine beliebte Open-Source-Plattform, die die Entwicklung, Bereitstellung und Verwaltung von Anwendungen mithilfe von Containern ermöglicht. Container sind leichte, eigenständige und ausführbare Softwarepakete, die alle notwendigen Abhängigkeiten, Bibliotheken und Konfigurationen enthalten, um eine Anwendung auszuführen.

Was sind Docker-Container?

Docker-Container sind eine Möglichkeit, eine Anwendung und alle ihre Abhängigkeiten in einer einzigen, portablen Einheit zu verpacken, die einfach auf jedem System bereitgestellt und ausgeführt werden kann, auf dem Docker installiert ist. Container bieten eine konsistente und zuverlässige Umgebung für die Ausführung von Anwendungen und stellen sicher, dass die Anwendung sich unabhängig von der zugrunde liegenden Infrastruktur gleich verhält.

Vorteile von Docker-Containern

  1. Portabilität: Docker-Container können problemlos zwischen verschiedenen Umgebungen wie Entwicklung, Test und Produktion verschoben werden, ohne sich um Kompatibilitätsprobleme kümmern zu müssen.
  2. Skalierbarkeit: Docker-Container lassen sich leicht basierend auf den Ressourcenanforderungen der Anwendung skalieren, was die Handhabung von Nachfrageschwankungen erleichtert.
  3. Effizienz: Docker-Container sind leichter und effizienter als herkömmliche virtuelle Maschinen, da sie das Host-Betriebssystem gemeinsam nutzen und nur die notwendigen Komponenten für die Ausführung der Anwendung enthalten.
  4. Konsistenz: Docker-Container stellen sicher, dass die Anwendung in verschiedenen Umgebungen gleich ausgeführt wird, wodurch das Risiko unerwarteter Verhaltensweisen oder Fehler reduziert wird.

Docker-Container-Architektur

graph TD A[Docker Host] --> B[Docker Engine] B --> C[Docker Images] B --> D[Docker Containers] D --> E[Anwendung]

Die wichtigsten Komponenten der Docker-Container-Architektur sind:

  • Docker Host: Der physische oder virtuelle Computer, der den Docker Engine ausführt und die Docker-Container hostet.
  • Docker Engine: Der Kern der Docker-Plattform, der für die Verwaltung der Erstellung, Ausführung und des Lebenszyklus von Docker-Containern verantwortlich ist.
  • Docker Images: Die Vorlagen zur Erstellung von Docker-Containern, die den Anwendungscode, die Abhängigkeiten und die Konfiguration enthalten.
  • Docker Containers: Die laufenden Instanzen von Docker-Images, die die Anwendung und ihre Abhängigkeiten kapseln.

Docker-Container-Bereitstellungsablauf

  1. Docker Image erstellen: Erstellen Sie ein Docker-Image, indem Sie die Abhängigkeiten, Konfigurationen und Build-Anweisungen der Anwendung in einer Dockerfile definieren.
  2. Docker Image pushen: Laden Sie das Docker-Image in ein Container-Registry, wie Docker Hub oder ein privates Registry, um es für die Bereitstellung zugänglich zu machen.
  3. Docker Container bereitstellen: Ziehen Sie das Docker-Image aus dem Registry und führen Sie es als Container auf dem Ziel-Docker-Host aus.
  4. Container verwalten und überwachen: Verwalten Sie den Lebenszyklus der laufenden Container, einschließlich Skalierung, Aktualisierung und Überwachung ihrer Leistung und Gesundheit.

Mit dem Verständnis der Grundlagen von Docker-Containern können Sie erkunden, wie Sie diese auf internen Hosts bereitstellen und verwalten, was in den folgenden Abschnitten behandelt wird.

Docker auf internen Hosts installieren

Voraussetzungen

Bevor Sie Docker auf Ihren internen Hosts installieren, stellen Sie sicher, dass Folgendes vorhanden ist:

  • Ein Linux-Betriebssystem (z. B. Ubuntu 22.04)
  • Root- oder sudo-Rechte zum Installieren und Konfigurieren von Docker

Docker auf Ubuntu 22.04 installieren

  1. Aktualisieren Sie das Paketindex und installieren Sie die notwendigen Abhängigkeiten:
sudo apt-get update
sudo apt-get install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
  1. Fügen Sie den offiziellen Docker GPG-Schlüssel hinzu und richten Sie das Docker-Repository ein:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Installieren Sie den Docker Engine, Docker CLI und Docker Compose:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. Überprüfen Sie die Installation, indem Sie den folgenden Befehl ausführen:
sudo docker run hello-world

Dies lädt ein Test-Image herunter und führt es in einem Container aus, was bestätigt, dass Docker installiert und korrekt funktioniert.

Docker für interne Hosts konfigurieren

  1. Netzwerk-Konfiguration: Standardmäßig verwendet Docker den bridge-Netzwerk-Treiber, der ein privates Netzwerk für die Container erstellt. Wenn Sie auf die Container von anderen Hosts oder dem Internet zugreifen müssen, müssen Sie die Netzwerkeinstellungen entsprechend konfigurieren.

  2. Speicher-Konfiguration: Docker speichert Containerdaten standardmäßig im Verzeichnis /var/lib/docker. Sie können den Speicher-Treiber und den Speicherort an Ihre Bedürfnisse anpassen, z. B. durch Verwendung eines dedizierten Speichervolumens oder eines Netzwerk-Speichers.

  3. Benutzerberechtigungen: Um das sudo bei jedem Docker-Befehl zu vermeiden, können Sie Ihren Benutzeraccount zur Gruppe docker hinzufügen:

sudo usermod -aG docker $USER

Melden Sie sich danach ab und wieder an, damit die Änderungen wirksam werden.

  1. Proxy-Konfiguration: Wenn Ihre internen Hosts einen Proxy benötigen, um auf das Internet zuzugreifen, müssen Sie den Docker-Daemon konfigurieren, um die Proxy-Einstellungen zu verwenden. Dies kann durch die Erstellung einer systemd-Konfigurationsdatei erfolgen.

Mit diesen Schritten können Sie Docker erfolgreich auf Ihren internen Hosts installieren und diese für die Bereitstellung von Docker-Containern vorbereiten.

Erstellen und Konfigurieren von Docker Containern

Erstellen von Docker Images

Um einen Docker Container zu erstellen, müssen Sie zuerst ein Docker Image erstellen. Dies geschieht durch die Definition der Anwendungsabhängigkeiten, Konfigurationen und Build-Anweisungen in einer Dockerfile.

Hier ist ein Beispiel für eine Dockerfile für eine einfache Node.js Anwendung:

## Verwenden Sie das offizielle Node.js Image als Basis
FROM node:14

## Legen Sie das Arbeitsverzeichnis auf /app fest
WORKDIR /app

## Kopieren Sie die Dateien package.json und package-lock.json
COPY package*.json ./

## Installieren Sie die Anwendungsabhängigkeiten
RUN npm install

## Kopieren Sie den Anwendungscode
COPY . .

## Bauen Sie die Anwendung
RUN npm run build

## Exponieren Sie den Anwendungsport
EXPOSE 3000

## Starten Sie die Anwendung
CMD ["npm", "start"]

Sie können das Docker Image mit folgendem Befehl erstellen:

docker build -t my-node-app .

Dies erstellt ein neues Docker Image namens my-node-app basierend auf der Dockerfile im aktuellen Verzeichnis.

Ausführen von Docker Containern

Um einen Docker Container aus dem gerade erstellten Image auszuführen, verwenden Sie folgenden Befehl:

docker run -d -p 8080:3000 --name my-node-container my-node-app

Dieser Befehl:

  • Führt den Container im detachierten Modus (-d) aus
  • Mapt den Host-Port 8080 auf den Container-Port 3000 (-p 8080:3000)
  • Weist dem laufenden Container den Namen my-node-container zu
  • Startet den Container mit dem Image my-node-app

Konfigurieren von Docker Containern

Sie können verschiedene Aspekte eines Docker Containers konfigurieren, wie z. B.:

  1. Umgebungsvariablen: Legen Sie Umgebungsvariablen mit dem Flag -e oder --env fest, z. B. docker run -e DB_PASSWORD=mypassword ...
  2. Volumes: Mounten Sie Hostverzeichnisse oder benannte Volumes auf den Container mit dem Flag -v oder --volume, z. B. docker run -v /host/path:/container/path ...
  3. Netzwerk-Konfiguration: Verbinden Sie den Container mit einem bestimmten Netzwerk mit dem Flag --network, z. B. docker run --network my-network ...
  4. Ressourcenlimits: Legen Sie Ressourcenlimits für den Container fest, z. B. CPU, Speicher oder E/A, mit den Flags --cpus, --memory oder --blkio-weight, z. B. docker run --cpus 2 --memory 512m ...

Durch das Verständnis des Erstellens von Docker Images und des Ausführens von Docker Containern mit verschiedenen Konfigurationen können Sie beginnen, Ihre Anwendungen auf internen Hosts bereitzustellen.

Bereitstellung von Docker Containern auf internen Hosts

Vorbereitung der internen Hosts

Bevor Sie Docker Container auf Ihren internen Hosts bereitstellen, stellen Sie sicher, dass die folgenden Schritte abgeschlossen sind:

  1. Installieren Sie Docker auf den internen Hosts, wie im vorherigen Abschnitt beschrieben.
  2. Stellen Sie sicher, dass die internen Hosts die notwendige Netzwerkverbindung und Firewall-Regeln haben, um auf benötigte Ressourcen wie Datenbanken, externe Dienste oder das Internet (falls erforderlich) zugreifen zu können.
  3. (Optional) Richten Sie einen privaten Container-Registry ein, um Ihre Docker Images zu speichern, falls Sie keine öffentliche Registry wie Docker Hub verwenden möchten.

Bereitstellung von Docker Containern

Es gibt verschiedene Möglichkeiten, Docker Container auf internen Hosts bereitzustellen, abhängig von Ihren spezifischen Anforderungen und der Infrastruktur.

Verwendung der Docker CLI

Die einfachste Methode zur Bereitstellung von Docker Containern ist die direkte Verwendung der Docker Befehlszeilenschnittstelle (CLI) auf den internen Hosts. Hier ist ein Beispiel, wie Sie den zuvor erstellten Container my-node-app bereitstellen:

docker run -d -p 8080:3000 --name my-node-container my-node-app

Dieser Befehl startet den Container im detachierten Modus und mappt den Host-Port 8080 auf den Container-Port 3000.

Verwendung von Docker Compose

Für komplexere Bereitstellungen mit mehreren Containern und Diensten können Sie Docker Compose verwenden. Erstellen Sie eine Datei docker-compose.yml, die die Dienste und deren Konfigurationen definiert, und stellen Sie die Stack dann mit folgendem Befehl bereit:

docker-compose up -d

Dies startet alle in der Datei docker-compose.yml definierten Container im detachierten Modus.

Verwendung von Container-Orchestrierungsplattformen

Für groß angelegte, produktionsreife Bereitstellungen können Sie eine Container-Orchestrierungsplattform wie Kubernetes oder LabEx Platform verwenden. Diese Plattformen bieten erweiterte Funktionen zur Verwaltung, Skalierung und Überwachung von Docker Containern über mehrere Hosts hinweg.

Um Docker Container mit einer Container-Orchestrierungsplattform bereitzustellen, müssen Sie die notwendigen Konfigurationsdateien (z. B. Kubernetes Manifests) definieren und die Plattform-CLI oder die webbasierte Oberfläche verwenden, um die Container bereitzustellen.

Überprüfung der Bereitstellung

Nach der Bereitstellung der Docker Container können Sie deren Status überprüfen und auf die laufenden Anwendungen zugreifen, indem Sie die folgenden Befehle verwenden:

## Liste der laufenden Container
docker ps

## Container-Logs anzeigen
docker logs my-node-container

## Zugriff auf die laufende Anwendung
curl http://localhost:8080

Mit diesen Schritten können Sie Ihre Docker Container erfolgreich auf Ihren internen Hosts bereitstellen und für Benutzer oder andere Anwendungen zugänglich machen.

Verwaltung und Überwachung von Docker Containern

Verwaltung von Docker Containern

Sobald Ihre Docker Container bereitgestellt sind, müssen Sie ihren Lebenszyklus verwalten, einschließlich Starten, Stoppen, Skalieren und Aktualisieren. Hier sind einige gängige Docker Verwaltungsbefehle:

## Starten eines Containers
docker start my-node-container

## Stoppen eines Containers
docker stop my-node-container

## Neustarten eines Containers
docker restart my-node-container

## Skalieren der Anzahl der Container-Replikate
docker scale my-node-container=3

## Aktualisieren eines Containers mit einem neuen Image
docker pull my-node-app:v2
docker stop my-node-container
docker run -d -p 8080:3000 --name my-node-container my-node-app:v2

Überwachung von Docker Containern

Die Überwachung des Zustands und der Leistung Ihrer Docker Container ist entscheidend für die Zuverlässigkeit und Skalierbarkeit Ihrer Anwendungen. Sie können verschiedene Tools und Techniken verwenden, um Ihre Docker Umgebung zu überwachen:

Docker CLI

Die Docker CLI bietet grundlegende Überwachungsbefehle, wie z. B.:

## Liste der laufenden Container
docker ps

## Container-Logs anzeigen
docker logs my-node-container

## Containerdetails anzeigen
docker inspect my-node-container

Docker Metriken

Docker bietet integrierte Metriken, auf die Sie über die Docker API oder durch die Integration mit Überwachungstools zugreifen können. Sie können Metriken wie CPU-, Speicher-, Netzwerk- und Speicherverwendung für Ihre Container sammeln.

Tools von Drittanbietern

Sie können Tools von Drittanbietern wie LabEx Platform, Prometheus oder Grafana verwenden, um erweiterte Docker Metriken zu sammeln und zu visualisieren. Diese Tools können Ihnen helfen, den Gesamtzustand und die Leistung Ihrer Docker Umgebung zu überwachen.

Hier ist ein Beispiel dafür, wie Sie LabEx Platform verwenden können, um Ihre Docker Container zu überwachen:

graph TD A[Interne Hosts] --> B[Docker Container] B --> C[LabEx Agent] C --> D[LabEx Platform] D --> E[Überwachungsdashboard]

LabEx Platform bietet eine umfassende Überwachungslösung für Docker Umgebungen, mit der Sie Container-Metriken verfolgen, Alarme setzen und benutzerdefinierte Berichte generieren können.

Durch die Nutzung dieser Verwaltungs- und Überwachungstools können Sie Ihre Docker Container auf internen Hosts effektiv warten und optimieren.

Netzwerk und Speicherung für Docker Container

Netzwerk für Docker Container

Docker bietet verschiedene Netzwerk-Treiber, um Ihre Container zu verbinden und zu isolieren, darunter:

  1. Bridge-Netzwerk: Der Standard-Netzwerk-Treiber, der ein privates Netzwerk für die Container auf dem Host erstellt.
  2. Host-Netzwerk: Ermöglicht es Containern, den Netzwerkstapel des Hosts zu verwenden, wodurch die Netzwerkisolierung effektiv aufgehoben wird.
  3. Overlay-Netzwerk: Ermöglicht die Kommunikation zwischen Containern über mehrere Docker-Hosts hinweg, was für Clustering und Orchestrierung nützlich ist.
  4. Macvlan-Netzwerk: Ermöglicht es Containern, eine MAC-Adresse zugewiesen zu bekommen, wodurch sie wie physische Geräte im Netzwerk erscheinen.

Sie können Docker-Netzwerke mit folgenden Befehlen erstellen und verwalten:

## Erstellen eines neuen Bridge-Netzwerks
docker network create my-network

## Verbinden eines Containers mit einem Netzwerk
docker run -d --name my-container --network my-network my-node-app

## Anzeigen der Informationen eines Netzwerks
docker network inspect my-network

Speicherung für Docker Container

Docker Container verwenden standardmäßig das Dateisystem des Hosts zur Datenspeicherung, aber diese Daten sind flüchtig und gehen verloren, wenn der Container entfernt wird. Um Daten zu speichern, können Sie Docker Volumes verwenden, die unabhängig vom Lebenszyklus des Containers sind.

Es gibt verschiedene Arten von Docker Volumes:

  1. Benannte Volumes: Volumes mit einem eindeutigen Namen, die von Docker verwaltet werden.
  2. Bind Mounts: Verknüpfen eines Verzeichnisses auf dem Host mit einem Verzeichnis im Container.
  3. tmpfs Mounts: Erstellen eines temporären Dateisystems im Arbeitsspeicher des Containers.

Hier ist ein Beispiel für die Erstellung eines benannten Volumes und dessen Mounten in einen Container:

## Erstellen eines benannten Volumes
docker volume create my-volume

## Ausführen eines Containers mit dem benannten Volume
docker run -d --name my-container -v my-volume:/app my-node-app

Sie können auch Netzwerk-Speicher (NAS) oder Cloud-Speicherdienste verwenden, um eine dauerhafte Speicherung für Ihre Docker Container zu gewährleisten.

Durch das Verständnis der Netzwerk- und Speicheroptionen von Docker stellen Sie sicher, dass Ihre Container korrekt verbunden sind und ihre Daten zuverlässig gespeichert und abgerufen werden können.

Best Practices für die Bereitstellung von Docker Containern

Bei der Bereitstellung von Docker Containern auf internen Hosts ist es wichtig, Best Practices zu befolgen, um die Zuverlässigkeit, Sicherheit und Skalierbarkeit Ihrer Anwendungen sicherzustellen. Hier sind einige wichtige Best Practices:

Alles containerisieren

Verwenden Sie einen "Alles-containerisieren"-Ansatz, indem Sie alle Ihre Anwendungen und Dienste als Docker Container verpacken. Dies gewährleistet Konsistenz, Portabilität und einfachere Verwaltung über verschiedene Umgebungen hinweg.

Immutables Infrastruktur verwenden

Behandeln Sie Ihre Docker Container als unveränderliche Infrastruktur, d. h. Sie sollten niemals direkt Änderungen an einem laufenden Container vornehmen. Aktualisieren Sie stattdessen die Dockerfile und erstellen Sie das Image neu, um Änderungen bereitzustellen.

Docker Images optimieren

Optimieren Sie Ihre Docker Images, indem Sie Folgendes tun:

  • Verwenden Sie das kleinstmögliche Basis-Image.
  • Minimieren Sie die Anzahl der Schichten in der Dockerfile.
  • Nutzen Sie mehrstufige Builds, um die Imagegröße zu reduzieren.
  • Scannen und aktualisieren Sie Basis-Images regelmäßig auf Sicherheitslücken.

Sichere Praktiken implementieren

Sichern Sie Ihre Docker Umgebung, indem Sie Folgendes tun:

  • Signieren und verifizieren Sie Docker Images.
  • Scannen Sie Images auf Sicherheitslücken.
  • Beschränken Sie die Container-Berechtigungen und -Funktionen.
  • Aktivieren Sie Sicherheitsfunktionen wie AppArmor oder SELinux.

Geheimnisse sicher verwalten

Speichern und verwalten Sie vertrauliche Informationen wie API-Schlüssel, Datenbankanmeldeinformationen oder SSL/TLS-Zertifikate mithilfe einer sicheren Geheimverwaltungslösung wie LabEx Vault oder HashiCorp Vault.

Container überwachen und protokollieren

Implementieren Sie eine umfassende Überwachung und Protokollierung Ihrer Docker Container, um die Gesundheit, Leistung und etwaige Probleme einzusehen. Tools wie LabEx Platform können dabei erheblich helfen.

Container-Orchestrierung verwenden

Für produktionsreife Bereitstellungen nutzen Sie eine Container-Orchestrierungsplattform wie LabEx Platform oder Kubernetes, um die Skalierung, Hochverfügbarkeit und den Lebenszyklus Ihrer Docker Container zu verwalten.

Bereitstellungsprozesse automatisieren

Automatisieren Sie Ihre Docker Container-Bereitstellungsprozesse mit Tools wie Docker Compose, Jenkins oder LabEx Platform, um Konsistenz, Wiederholbarkeit und Effizienz sicherzustellen.

Durch die Einhaltung dieser Best Practices stellen Sie sicher, dass Ihre Docker Container-Bereitstellungen auf internen Hosts zuverlässig, sicher und skalierbar sind.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie Docker Container auf Ihren internen Hosts bereitstellen. Sie haben die wesentlichen Schritte behandelt, von der Installation von Docker bis zur Erstellung, Konfiguration und Verwaltung von Docker Containern. Durch die Einhaltung dieser Best Practices können Sie nun die Vorteile von Docker effizient nutzen, um Ihre Anwendungsbereitstellung und -verwaltung auf internen Docker-Hosts zu optimieren. Mit dem erlangten Wissen können Sie Ihre Docker-Fähigkeiten weiter erforschen und erweitern, um die Infrastruktur und Arbeitsabläufe Ihres Unternehmens weiter zu verbessern.