Wie benutze ich Docker auf Linux?

To use Docker on Linux, first install Docker via your package manager. Then, learn basic commands like `docker run`, `docker build`, and `docker-compose` to manage containers effectively.
Inhaltsverzeichnis
how-do-i-use-docker-on-linux-2

How to Use Docker on Linux: An Advanced Guide

Docker has revolutionized the way developers build, ship, and run applications. By utilizing containerization technology, it allows you to package software into standardized units called containers. This approach not only enhances productivity but also ensures that applications run consistently across different environments. In this advanced guide, we will explore how to effectively use Docker on Linux, covering installation, basic commands, advanced features, and best practices.

Inhaltsverzeichnis

  1. Was ist Docker?
  2. Why Use Docker on Linux?
  3. Installation von Docker auf Linux
  4. Grundlegende Docker-BefehleDocker ist eine Plattform, die es ermöglicht, Anwendungen in Containern zu verpacken und auszuführen. Container sind leichtgewichtige, eigenständige und ausführbare Softwarepakete, die alles enthalten, was zur Ausführung einer Anwendung benötigt wird, einschließlich Code, Laufzeit, Systemtools, Systembibliotheken und Einstellungen.Hier sind einige grundlegende Docker-Befehle, die Ihnen den Einstieg erleichtern:1. docker run: Dieser Befehl wird verwendet, um einen neuen Container aus einem Image zu erstellen und zu starten. Zum Beispiel: ``` docker run hello-world ``` Dieser Befehl lädt das hello-world-Image herunter und erstellt einen Container, der die Nachricht "Hello from Docker!" ausgibt.2. docker ps: Mit diesem Befehl können Sie eine Liste aller laufenden Container anzeigen. Zum Beispiel: ``` docker ps ``` Dieser Befehl zeigt eine Liste aller laufenden Container mit Informationen wie Container-ID, Image-Name, Befehl, Erstellungszeit und Status an.3. docker stop: Mit diesem Befehl können Sie einen laufenden Container stoppen. Zum Beispiel: ``` docker stop ``` Ersetzen Sie durch die ID des Containers, den Sie stoppen möchten.4. docker rm: Mit diesem Befehl können Sie einen gestoppten Container entfernen. Zum Beispiel: ``` docker rm ``` Ersetzen Sie durch die ID des Containers, den Sie entfernen möchten.5. docker images: Mit diesem Befehl können Sie eine Liste aller lokal verfügbaren Images anzeigen. Zum Beispiel: ``` docker images ``` Dieser Befehl zeigt eine Liste aller Images mit Informationen wie Repository-Name, Tag, Image-ID, Erstellungszeit und Größe an.6. docker pull: Mit diesem Befehl können Sie ein Image aus einer Registry herunterladen. Zum Beispiel: ``` docker pull ubuntu ``` Dieser Befehl lädt das neueste Ubuntu-Image aus der Docker Hub Registry herunter.7. docker build: Mit diesem Befehl können Sie ein neues Image aus einer Dockerfile erstellen. Zum Beispiel: ``` docker build -t my-app . ``` Dieser Befehl erstellt ein neues Image mit dem Namen "my-app" aus der Dockerfile im aktuellen Verzeichnis.8. docker exec: Mit diesem Befehl können Sie einen Befehl in einem laufenden Container ausführen. Zum Beispiel: ``` docker exec -it bash ``` Dieser Befehl öffnet eine interaktive Bash-Shell im angegebenen Container.9. docker logs: Mit diesem Befehl können Sie die Logs eines Containers anzeigen. Zum Beispiel: ``` docker logs ``` Dieser Befehl zeigt die Logs des angegebenen Containers an.10. docker volume: Mit diesem Befehl können Sie Volumes verwalten, die zum persistenten Speichern von Daten verwendet werden. Zum Beispiel: ``` docker volume create my-volume ``` Dieser Befehl erstellt ein neues Volume mit dem Namen "my-volume".Diese grundlegenden Docker-Befehle sollten Ihnen den Einstieg in die Welt von Docker erleichtern. Mit der Zeit werden Sie weitere Befehle und Optionen entdecken, um Ihre Docker-Umgebung zu optimieren und zu verwalten.
  5. Docker-Images und Container
  6. Netzwerken in Docker
  7. Docker Volumes and Data Management
  8. Docker Compose
  9. Docker Security Best Practices
  10. Fazit

Was ist Docker?

Docker is an open-source platform that enables developers to automate the deployment of applications within lightweight containers. These containers encapsulate all the dependencies an application needs to run, ensuring that it behaves the same way regardless of where it is deployed. Docker abstracts the underlying infrastructure, allowing developers to focus on writing code rather than worrying about environment discrepancies.

Why Use Docker on Linux?

Linux ist aus mehreren Gründen das bevorzugte Betriebssystem für Docker:

  • PerformanceDocker-Container laufen nativ auf Linux, was zu einer besseren Leistung im Vergleich zur Ausführung auf virtuellen Maschinen führt.
  • FlexibilitätLinux bietet umfassende Unterstützung für eine breite Palette von Anwendungen und Diensten, was es zu einer idealen Umgebung für containerisierte Anwendungen macht.
  • Gemeinschaft und Unterstützung: Die Linux-Community ist groß und aktiv und bietet umfangreiche Dokumentation und Unterstützung für Docker-Benutzer.
  • Integration: Many cloud providers and hosting services support Docker on Linux, making it easier to deploy containerized applications in production.

Installation von Docker auf Linux

Schritt 1: Aktualisieren Sie Ihr System

Bevor Sie Docker installieren, aktualisieren Sie den Paketindex Ihres Systems. Öffnen Sie ein Terminal und führen Sie Folgendes aus:

sudo apt-get update

Step 2: Install Docker

Verwenden Sie für Ubuntu-basierte Systeme die folgenden Befehle, um Docker zu installieren:

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

For CentOS, execute:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce

Step 3: Start the Docker Service

Sobald es installiert ist, starten Sie den Docker-Dienst:

sudo systemctl start docker

Um Docker beim Booten zu aktivieren, führen Sie aus:

sudo systemctl docker aktivieren

Schritt 4: Installation überprüfen

Überprüfen Sie, ob Docker korrekt installiert ist, indem Sie Folgendes ausführen:

sudo docker --version

Sie sollten die installierte Docker-Version sehen. Außerdem können Sie den "hello-world"-Container ausführen, um die Installation zu überprüfen:

sudo docker run hello-world

Grundlegende Docker-BefehleDocker ist eine Plattform, die es ermöglicht, Anwendungen in Containern zu verpacken und auszuführen. Container sind leichtgewichtige, eigenständige und ausführbare Softwarepakete, die alles enthalten, was zur Ausführung einer Anwendung benötigt wird, einschließlich Code, Laufzeit, Systemtools, Systembibliotheken und Einstellungen.Hier sind einige grundlegende Docker-Befehle, die Ihnen den Einstieg erleichtern:1. docker run: Dieser Befehl wird verwendet, um einen neuen Container aus einem Image zu erstellen und zu starten. Zum Beispiel: ``` docker run hello-world ``` Dieser Befehl lädt das hello-world-Image herunter und erstellt einen Container, der die Nachricht "Hello from Docker!" ausgibt.2. docker ps: Mit diesem Befehl können Sie eine Liste aller laufenden Container anzeigen. Zum Beispiel: ``` docker ps ``` Dieser Befehl zeigt eine Liste aller laufenden Container mit Informationen wie Container-ID, Image-Name, Befehl, Erstellungszeit und Status an.3. docker stop: Mit diesem Befehl können Sie einen laufenden Container stoppen. Zum Beispiel: ``` docker stop ``` Ersetzen Sie durch die ID des Containers, den Sie stoppen möchten.4. docker rm: Mit diesem Befehl können Sie einen gestoppten Container entfernen. Zum Beispiel: ``` docker rm ``` Ersetzen Sie durch die ID des Containers, den Sie entfernen möchten.5. docker images: Mit diesem Befehl können Sie eine Liste aller lokal verfügbaren Images anzeigen. Zum Beispiel: ``` docker images ``` Dieser Befehl zeigt eine Liste aller Images mit Informationen wie Repository-Name, Tag, Image-ID, Erstellungszeit und Größe an.6. docker pull: Mit diesem Befehl können Sie ein Image aus einer Registry herunterladen. Zum Beispiel: ``` docker pull ubuntu ``` Dieser Befehl lädt das neueste Ubuntu-Image aus der Docker Hub Registry herunter.7. docker build: Mit diesem Befehl können Sie ein neues Image aus einer Dockerfile erstellen. Zum Beispiel: ``` docker build -t my-app . ``` Dieser Befehl erstellt ein neues Image mit dem Namen "my-app" aus der Dockerfile im aktuellen Verzeichnis.8. docker exec: Mit diesem Befehl können Sie einen Befehl in einem laufenden Container ausführen. Zum Beispiel: ``` docker exec -it bash ``` Dieser Befehl öffnet eine interaktive Bash-Shell im angegebenen Container.9. docker logs: Mit diesem Befehl können Sie die Logs eines Containers anzeigen. Zum Beispiel: ``` docker logs ``` Dieser Befehl zeigt die Logs des angegebenen Containers an.10. docker volume: Mit diesem Befehl können Sie Volumes verwalten, die zum persistenten Speichern von Daten verwendet werden. Zum Beispiel: ``` docker volume create my-volume ``` Dieser Befehl erstellt ein neues Volume mit dem Namen "my-volume".Diese grundlegenden Docker-Befehle sollten Ihnen den Einstieg in die Welt von Docker erleichtern. Mit der Zeit werden Sie weitere Befehle und Optionen entdecken, um Ihre Docker-Umgebung zu optimieren und zu verwalten.

Die Kenntnis grundlegender Docker-Befehle ist wesentlich für ein effizientes Container-Management. Hier sind einige wichtige Befehle:

  • Docker-Images auflisten:

    docker images
  • Ziehen Sie ein Image von Docker Hub:

    docker pull 
  • Führen Sie einen Container aus:

    docker run -d -p : 
  • Auflistung laufender Container:

    docker ps
  • Stoppe einen laufenden Container.:

    docker stop 
  • Remove a container:

    Docker-Container entfernen 
  • Remove an image:

    docker Image entfernen 

Docker-Images und Container

Understanding the difference between Docker images and containers is crucial for effective usage.

  • Docker ImagesDies sind schreibgeschützte Vorlagen, die zur Erstellung von Containern verwendet werden. Ein Image enthält alles, was zum Ausführen einer Anwendung benötigt wird: Code, Bibliotheken, Abhängigkeiten und die Laufzeitumgebung.

  • Docker-Container: These are instances of Docker images. They are isolated environments where applications run. Containers can be started, stopped, moved, and deleted.

Creating a Custom Docker Image

You can create a custom Docker image using a Dockerfile. Hier ist ein Beispiel:

# Verwenden Sie ein offizielles Python-Laufzeitumgebung als Basis-Image
FROM python:3.9-slim

# Setzen Sie das Arbeitsverzeichnis im Container
WORKDIR /app

# Kopieren Sie den Inhalt des aktuellen Verzeichnisses in den Container nach /app
COPY . /app

# Installieren Sie alle benötigten Pakete, die in requirements.txt angegeben sind
RUN pip install --no-cache-dir -r requirements.txt

# Machen Sie Port 80 für die Außenwelt verfügbar
EXPOSE 80

# Definieren Sie eine Umgebungsvariable
ENV NAME World

# Führen Sie app.py aus, wenn der Container gestartet wird
CMD ["python", "app.py"]

To build and run this image:

docker build -t my-python-app .
docker run -p 4000:80 my-python-app

Netzwerken in Docker

Docker bietet verschiedene Netzwerkoptionen, um die Kommunikation zwischen Containern und der Außenwelt zu ermöglichen. Hier sind einige wichtige Konzepte:

Brückennetzwerk

Dies ist der Standard-Netzwerkmodus. Container können über IP-Adressen oder Containernamen miteinander kommunizieren.

Host-Netzwerk

In this mode, the container shares the host’s network stack. This option is useful for performance-sensitive applications.

Overlay-Netzwerk

Dies wird für Multi-Host-Netzwerke verwendet, damit auf verschiedenen Hosts laufende Container miteinander kommunizieren können.

Benutzerdefiniertes Netzwerk

Sie können benutzerdefinierte Netzwerke erstellen, um Container zu isolieren und die Kommunikation zu verwalten. Verwenden Sie den folgenden Befehl, um ein Netzwerk zu erstellen:

docker network create my-network

Um Container in diesem benutzerdefinierten Netzwerk auszuführen:

docker run --network my-network --name my-container 

Docker Volumes and Data Management

Managing data in containers can be challenging since containers are ephemeral. Docker provides volumes to persist data beyond the container’s lifecycle.

Creating a Volume

Sie können ein Volume mit dem folgenden Befehl erstellen:

Docker-Volume erstellen my-volume

Verwendung von Volumes

Um das Volume in einem Container zu verwenden, können Sie es zur Laufzeit angeben:

docker run -d -v my-volume:/app/data 

Volumes inspizieren

To view detailed information about a volume:

docker volume inspect my-volume

Docker Compose

Docker Compose ist ein Werkzeug, das es Ihnen ermöglicht, Multi-Container-Docker-Anwendungen zu definieren und zu verwalten. Mit Compose können Sie den Anwendungstapel in einer docker-compose.yml file.

Beispiel docker-compose.yml

Hier ist ein Beispiel für eine einfache Webanwendung mit einem Webserver und einer Datenbank:

version: '3'
services:
  web:
    image: my-web-app
    build: .
    ports:
      - "5000:5000"
    volumes:
      - ./app:/app

  db:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

Running Docker Compose

Um die Anwendung zu starten, führen Sie Folgendes aus:

docker-compose up

Um die Anwendung zu beenden, verwenden Sie:

docker-compose herunterfahren

Docker Security Best Practices

While Docker provides isolation for applications, it is crucial to implement security best practices to mitigate potential risks:

  1. Verwenden Sie offizielle Bilder: Bevorzugen Sie immer offizielle Images von Docker Hub oder gut gepflegte Repositories.

  2. Beschränken Sie die Privilegien: Run containers with the least privileges necessary. Avoid using the root user in containers unless absolutely necessary.

  3. Bilder aktuell halten: Regularly update your images to include security patches and updates.

  4. Scan Images for VulnerabilitiesNutze Werkzeuge wie Clair or Trivy um Ihre Bilder auf Sicherheitslücken zu scannen.

  5. Verwenden Sie Docker Secrets für sensible Daten.: Hardcodieren Sie niemals sensible Informationen in Ihrem Anwendungscode. Verwenden Sie Docker Secrets zur sicheren Verwaltung sensibler Daten.

  6. Implementieren Sie NetzwerksegmentierungNetzwerksegmentierung ist eine wichtige Sicherheitsmaßnahme, die dazu dient, ein Netzwerk in kleinere, isolierte Segmente zu unterteilen. Dies hilft, die Ausbreitung von Bedrohungen zu begrenzen und die Gesamtsicherheit des Netzwerks zu erhöhen. Hier sind einige Schritte zur Implementierung der Netzwerksegmentierung:1. **Netzwerkbewertung**: Beginnen Sie mit einer gründlichen Bewertung Ihres aktuellen Netzwerks. Identifizieren Sie kritische Systeme, sensible Daten und potenzielle Angriffsvektoren.2. **Segmentierungsstrategie entwickeln**: Basierend auf der Bewertung entwickeln Sie eine Strategie für die Segmentierung. Dies kann die Erstellung von VLANs (Virtual Local Area Networks), die Verwendung von Firewalls oder die Implementierung von Zero-Trust-Architekturen umfassen.3. **Netzwerksegmente definieren**: Teilen Sie Ihr Netzwerk in logische Segmente auf, basierend auf Funktion, Sicherheitsanforderungen oder Benutzerrollen. Zum Beispiel könnten Sie separate Segmente für Gäste, Mitarbeiter und kritische Infrastrukturen erstellen.4. **Zugriffskontrollen implementieren**: Richten Sie strenge Zugriffskontrollen für jedes Segment ein. Verwenden Sie Firewalls, Zugriffslisten und andere Sicherheitsmechanismen, um den Datenverkehr zwischen den Segmenten zu kontrollieren.5. **Überwachung und Protokollierung**: Implementieren Sie eine kontinuierliche Überwachung und Protokollierung des Netzwerkverkehrs. Dies hilft, verdächtige Aktivitäten zu erkennen und auf Sicherheitsvorfälle zu reagieren.6. **Regelmäßige Überprüfung und Aktualisierung**: Überprüfen und aktualisieren Sie regelmäßig Ihre Segmentierungsstrategie, um sicherzustellen, dass sie den sich ändernden Sicherheitsanforderungen entspricht.7. **Mitarbeiterschulung**: Schulen Sie Ihre Mitarbeiter über die Bedeutung der Netzwerksegmentierung und die damit verbundenen Sicherheitspraktiken.8. **Compliance-Anforderungen berücksichtigen**: Stellen Sie sicher, dass Ihre Segmentierungsstrategie den relevanten Compliance-Anforderungen entspricht, wie z.B. DSGVO, HIPAA oder PCI DSS.9. **Testen und Validieren**: Testen Sie regelmäßig die Wirksamkeit Ihrer Segmentierung, um sicherzustellen, dass sie wie beabsichtigt funktioniert und keine unbeabsichtigten Sicherheitslücken aufweist.10. **Incident Response Plan**: Entwickeln Sie einen Incident Response Plan, der spezifisch auf die Netzwerksegmentierung zugeschnitten ist, um im Falle eines Sicherheitsvorfalls schnell und effektiv reagieren zu können.Die Implementierung der Netzwerksegmentierung erfordert sorgfältige Planung und kontinuierliche Wartung, aber sie ist ein wesentlicher Bestandteil einer umfassenden Sicherheitsstrategie.: Verwenden Sie benutzerdefinierte Netzwerke, um Dienste zu isolieren und den Datenverkehr zwischen Containern zu steuern.

Fazit

Docker ist ein unverzichtbares Werkzeug für die moderne Anwendungsentwicklung und -bereitstellung, insbesondere in Linux-Umgebungen. Durch die Beherrschung der Installation, Befehle und erweiterten Funktionen von Docker können Sie Ihre Entwicklungsarbeit optimieren und Ihre Anwendungen effektiv verwalten. Mit den in diesem Leitfaden beschriebenen Best Practices und Sicherheitsmaßnahmen können Sie robuste, skalierbare und sichere Anwendungen mit Docker erstellen. Nutzen Sie die Kraft der Containerisierung und erschließen Sie neues Potenzial in Ihrem Entwicklungsprozess. Viel Spaß mit Containern!