Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro

Wissensdatenbank

Startseite Wissensdatenbank SSH Was ist Docker? Container-Erstellun...

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

Was ist Docker? Container-Erstellung und -Verwaltung unter Linux

Was ist Docker?

Docker ist eine Plattform, die Anwendungen und ihre Abhängigkeiten verpackt und so sicherstellt, dass sie in jeder Umgebung konsistent laufen. Diese Pakete werden Container genannt. Docker erleichtert es Entwicklern, ihre Anwendungen zu entwickeln, zu versenden und auszuführen. Es ähnelt der Virtualisierungstechnologie, ist aber leichter und nutzt Ressourcen effizienter.

  • Grundlegende Konzepte: Docker-Images, Container, Dockerfile, Docker Hub, Docker Compose
  • Vorteile: Portabilität, Isolation, Skalierbarkeit, Effizienz

Was ist ein Container? Was ist der Unterschied zu einer virtuellen Maschine?

Ein Container ist eine isolierte Umgebung, die alles enthält, was eine Anwendung zum Ausführen benötigt (Code, Laufzeitumgebung, Systemwerkzeuge, Systembibliotheken, Einstellungen). Virtuelle Maschinen (VMs) hingegen sind virtualisierte Kopien einer physischen Hardware und haben ihre eigenen Betriebssysteme.

Hauptunterschiede:

  • Größe und Gewicht: Container sind viel kleiner als VMs und verbrauchen weniger Ressourcen. VMs sind größer und benötigen mehr Ressourcen, da sie ein vollständiges Betriebssystem enthalten.
  • Startzeit: Container können in Sekundenschnelle gestartet werden, während das Starten von VMs länger dauert.
  • Ressourcennutzung: Container teilen sich den Kernel des Host-Betriebssystems und nutzen Ressourcen effizienter. VMs hingegen verbrauchen mehr Ressourcen, da sie ihre eigenen Betriebssysteme haben.
Merkmal Container Virtuelle Maschine (VM)
Größe Klein (MB) Groß (GB)
Startzeit Schnell (Sekunden) Langsam (Minuten)
Ressourcennutzung Niedrig Hoch
Isolation Auf Prozessebene Auf Hardwareebene
Betriebssystem Teilt sich den Host-OS-Kernel Hat ein eigenes OS

Beispiel: Betrachten wir eine Webanwendung. Mit Containern können wir alle Abhängigkeiten der Anwendung (z. B. Python-Laufzeitumgebung, erforderliche Bibliotheken) in einem Container verpacken. Dieser Container läuft in jeder Docker-Umgebung konsistent. Mit VMs müssten wir ein vollständiges Betriebssystem (z. B. Ubuntu) installieren und dann die Abhängigkeiten der Anwendung auf diesem Betriebssystem installieren.

Was ist ein Docker-Image? Was ist ein Dockerfile?

Ein Docker-Image ist eine schreibgeschützte Vorlage, die zum Erstellen eines Containers verwendet wird. Es enthält den Code der Anwendung, die Laufzeitumgebung, Systemwerkzeuge, Systembibliotheken und Einstellungen. Images können in einer Registry wie Docker Hub gespeichert und freigegeben werden.

Dockerfile ist eine Textdatei, die zum Erstellen eines Docker-Images verwendet wird. Sie enthält Anweisungen, die festlegen, wie das Image erstellt werden soll. Diese Anweisungen umfassen Vorgänge wie das Angeben des Basis-Images, das Kopieren von Dateien, das Ausführen von Befehlen und das Festlegen von Umgebungsvariablen.

Dockerfile Beispiel:


# Verwende Ubuntu als Basis-Image
FROM ubuntu:latest

# Installiere die erforderlichen Pakete
RUN apt-get update && apt-get install -y python3 python3-pip

# Kopiere die Anwendungsdateien
COPY . /app

# Setze das Arbeitsverzeichnis
WORKDIR /app

# Installiere die Abhängigkeiten
RUN pip3 install -r requirements.txt

# Starte die Anwendung
CMD ["python3", "app.py"]

Schrittweise Image-Erstellung:

  1. Erstelle eine Dockerfile.
  2. Erstelle das Image mit dem Befehl docker build:
    docker build -t my-app .
  3. Du kannst das erstellte Image mit dem Befehl docker images auflisten.
  4. Du kannst das Image in Docker Hub hochladen (optional).

Schritte zum Erstellen und Verwalten von Containern in Linux

Die Schritte zum Erstellen und Verwalten von Containern in Linux sind wie folgt:

  1. Docker-Installation: Führe die Docker-Installation aus, die für deine Linux-Distribution geeignet ist. Zum Beispiel für Ubuntu:
    
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. Docker-Dienst starten:
    sudo systemctl start docker
  3. Docker-Image herunterladen: Lade ein Image von Docker Hub herunter (z. B. Ubuntu):
    docker pull ubuntu:latest
  4. Container erstellen: Erstelle einen Container aus dem heruntergeladenen Image:
    docker run -it ubuntu:latest /bin/bash
    • -it: Interaktiver Terminalmodus
    • ubuntu:latest: Image-Name und Tag
    • /bin/bash: Befehl, der im Container ausgeführt werden soll
  5. Container-Verwaltung: Du kannst die folgenden Befehle verwenden, um Container zu verwalten:
    • docker ps: Listet die laufenden Container auf.
    • docker ps -a: Listet alle Container auf (laufende und gestoppte).
    • docker stop [container_id]: Stoppt den Container.
    • docker start [container_id]: Startet den Container.
    • docker restart [container_id]: Startet den Container neu.
    • docker rm [container_id]: Löscht den Container.
    • docker exec -it [container_id] /bin/bash: Verbindet sich mit einem laufenden Container.

Beispiel: Um einen Nginx-Webserver auszuführen:

  1. Nginx-Image herunterladen:
    docker pull nginx:latest
  2. Container erstellen und Port 80 dem Port 80 des Host-Rechners zuordnen:
    docker run -d -p 80:80 nginx:latest
    • -d: Im Hintergrund ausführen
    • -p 80:80: Port 80 des Host-Rechners dem Port 80 des Containers zuordnen
  3. Überprüfen Sie, ob Nginx läuft, indem Sie in Ihrem Webbrowser zu http://localhost gehen.

Was ist Docker Compose? Wie wird es verwendet?

Docker Compose ist ein Tool, mit dem Anwendungen definiert und ausgeführt werden können, die aus mehreren Containern bestehen. Mithilfe einer YAML-Datei können Sie die Dienste, Netzwerke und Volumes der Anwendung definieren. Docker Compose ermöglicht die einfache Verwaltung komplexer Anwendungen.

Beispiel für eine Compose-Datei (docker-compose.yml):


version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
      POSTGRES_DB: mydb
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Beschreibung:

  • version: Version des Docker Compose-Dateiformats
  • services: Definiert die Dienste der Anwendung (z. B. web, db)
  • image: Zu verwendendes Docker-Image für den Dienst
  • ports: Portzuordnungen zwischen dem Host-Rechner und dem Container
  • volumes: Volumezuordnungen zwischen dem Host-Rechner und dem Container
  • environment: Umgebungsvariablen innerhalb des Containers

Verwendung von Docker Compose:

  1. Erstellen Sie eine docker-compose.yml-Datei.
  2. Führen Sie den folgenden Befehl im Verzeichnis aus, in dem sich die Datei befindet:
    docker-compose up -d
    • up: Startet die Anwendung
    • -d: Führt sie im Hintergrund aus
  3. Um die Anwendung zu stoppen:
    docker-compose down

Was ist Docker Hub? Image-Veröffentlichungs- und -Abrufvorgänge

Docker Hub ist ein Cloud-basierter Registry-Dienst zum Speichern und Freigeben von Docker-Images. Entwickler können Docker Hub verwenden, um ihre eigenen Images zu veröffentlichen und die Images anderer abzurufen. Docker Hub unterstützt sowohl öffentliche als auch private Image-Repositories.

Verwendung von Docker Hub:

  1. Erstellen Sie ein Docker Hub-Konto.
  2. Melden Sie sich in Ihrem Terminal bei Ihrem Docker Hub-Konto an:
    docker login
  3. Erstellen Sie Ihr eigenes Image oder kennzeichnen Sie ein vorhandenes Image:
    docker tag my-app username/my-app:v1
    • my-app: Der Name des vorhandenen Images
    • username: Ihr Docker Hub-Benutzername
    • my-app:v1: Der Name und das Tag des neuen Images
  4. Senden Sie das Image an Docker Hub:
    docker push username/my-app:v1
  5. So ziehen Sie ein anderes Image:
    docker pull username/other-app:latest

Sicherheitsaspekte und Best Practices im Umgang mit Docker

Sicherheit ist ein wichtiges Thema bei der Verwendung von Docker. Hier sind einige Sicherheitsaspekte und Best Practices, die Sie beachten sollten:

  • Sicherheit des Basis-Images: Verwenden Sie vertrauenswürdige und aktuelle Basis-Images. Bevorzugen Sie offizielle und verifizierte Images auf Docker Hub.
  • Image-Scannen: Scannen Sie Ihre Images regelmäßig auf Sicherheitslücken. Docker Hub bietet Funktionen zur automatischen Image-Überprüfung. Sie können auch Tools von Drittanbietern wie Clair verwenden.
  • Benutzerautorisierung: Vermeiden Sie es, Container als Root-Benutzer auszuführen. Erstellen Sie nach Möglichkeit einen dedizierten Benutzer und führen Sie den Container unter diesem Benutzer aus.
  • Ressourcenbeschränkungen: Beschränken Sie die Ressourcen, die Container nutzen können, wie z. B. CPU, Speicher und Festplatte. Dies verhindert, dass ein Container übermäßig viele Ressourcen verbraucht und andere Container beeinträchtigt.
  • Netzwerksicherheit: Beschränken Sie die Kommunikation zwischen Containern. Mithilfe von Docker-Netzwerken können Sie Container isolieren und nur zulassen, dass die erforderlichen Container miteinander kommunizieren.
  • Verwaltung geheimer Informationen: Vermeiden Sie es, geheime Informationen wie API-Schlüssel, Passwörter und Zertifikate direkt in Container einzubetten. Verwenden Sie Tools wie Docker Secrets oder HashiCorp Vault, um geheime Informationen sicher zu verwalten.
  • Dockerfile-Sicherheit: Vermeiden Sie es, unnötige Pakete in Ihren Dockerfiles zu installieren. Kopieren Sie außerdem beim Verwenden des Befehls COPY nur die erforderlichen Dateien.
  • Bleiben Sie auf dem Laufenden: Aktualisieren Sie Docker und zugehörige Tools regelmäßig. Sicherheitslücken werden in der Regel durch Updates behoben.
Sicherheitsthema Bewährte Methode Werkzeuge/Techniken
Grundlegende Image-Sicherheit Verwenden Sie vertrauenswürdige und aktuelle Images Offizielle Images, Verifizierte Images
Image-Scanning Scannen Sie Images auf Sicherheitslücken Docker Hub automatisches Scannen, Clair
Benutzerautorisierung Führen Sie Container als Nicht-Root-Benutzer aus USER Befehl
Ressourcenbeschränkungen Beschränken Sie CPU-, Speicher- und Festplattennutzung docker run --cpus, --memory
Netzwerksicherheit Beschränken Sie die Kommunikation zwischen Containern Docker-Netzwerke
Geheimnismanagement Verwalten Sie Geheimnisse sicher Docker Secrets, HashiCorp Vault

 

 

Finden Sie nicht die Informationen, die Sie suchen?

Ticket erstellen
Fanden Sie es nützlich?
(1192 mal angesehen / 376 Kunden fanden es hilfreich)

Call now to get more detailed information about our products and services.

Top