Was ist überhaupt Docker?

Docker ist eine Plattform für die Containerisierung von Anwendungen, die es ermöglicht, Software in isolierten Umgebungen auszuführen. Ein Container enthält:

Dadurch läuft die Software überall gleich — egal ob auf deinem PC, Server oder in der Cloud.

Vorteile:

Installation auf Linux

Ich verwende hier die CE (Community Edition) von Docker, da sie immer sehr aktuell ist.

Wir erstellen folgendes Script zur Installation: 'vim install_docker.sh'

Script

#!/usr/bin/env bash
set -e

# OS Informationen laden
. /etc/os-release

# Pakete aktualisieren
sudo apt update

# Abhängigkeiten installieren
sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker GPG Key vorbereiten
sudo install -m 0755 -d /etc/apt/keyrings

# Docker GPG Key herunterladen
curl -fsSL https://download.docker.com/linux/$ID/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Docker Repository hinzufügen
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/$ID \
  $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Paketlisten aktualisieren
sudo apt update

# Docker installieren
sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

# Docker starten und aktivieren
sudo systemctl enable --now docker

# Benutzer zur Docker Gruppe hinzufügen
sudo usermod -aG docker "$USER"
            

Das Script ausführbar machen und ausführen:

chmod +x install_docker.sh
        ./install_docker.sh

Nach der Installation musst du dich abmelden und erneut anmelden, damit die Änderungen wirksam werden. Mit 'docker --version' kannst du überprüfen, ob Docker korrekt installiert wurde. Nun kommt es an die Voreinstellungen der Docker Konfiguartion. Docker legt die gesammte Ordner Struktur unter '/var/lib/docker' an. Ich lege die Strucktur immer unter /srv/docker an, damit wird es etwas übersichtlicher. Dazu müssen wir die Docker Daemon Konfiguration anpassen. Erstelle dazu die Datei '/etc/docker/daemon.json' mit folgendem Inhalt:

{
    "data-root": "/srv/docker"
}

Sollten schon Daten unter '/var/lib/docker' liegen, kannst du diese mit dem folgendem Befehl verschieben: rsync -aP /var/lib/docker/ /srv/docker/.

Da die Docker Daemon Konfiguration angepasst wurde, muss der Docker Daemon neu gestartet werden:

sudo systemctl restart docker

Der Docker Daemon sollte nun mit der neuen Konfiguration starten. Unter '/srv/docker' sollte nun die Docker Ordner Struktur folgendermaßen aussehen:

sudo tree -d -L 2 /srv
/srv
└── docker
    ├── buildkit
    ├── containers
    ├── image
    ├── network
    ├── overlay2
    ├── plugins
    ├── runtimes
    ├── swarm
    ├── tmp
    └── volumes

Container erstellen

Für einen Container zu bauen gibt es zwei Möglichkeiten, entweder per CMD-Einzeiler oder Docker-Compose. Ich persönlich vevorzuge Docker-Compose, da es übersichtlicher ist und man bessere Möglichkeiten hat, die Container zu konfigurieren. Als Beispiel werden wir einen NGIXN Webserver aufsetzen und ein Linux OS.

docker network create dmz && docker run -d --name nginx --network dmz -p 8080:80 nginx:latest && docker run -d --name alpine-linux --network dmz alpine tail -f /dev/null

Und als Docker-Compose File:

vim docker-compose.yml

---
services:
  webserver:
    image: nginx:latest
    container_name: nginx
    ports:
      - "8080:80"
    networks:
      - dmz
    volumes:
      - nginx:/usr/share/nginx/html/

  alpine:
    image: alpine
    container_name: alpine-linux
    command: tail -f /dev/null
    networks:
      - dmz

networks:
  dmz:
    driver: bridge

volumes:
  nginx:

Fortsetzung folgt ....