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.
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'
#!/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
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 ....