Docker
Docker Befehle
Docker Befehle
| Befehl | Beschreibung |
|---|---|
| docker start $container | startet den jeweiligen Container |
| docker container ls | running containers |
| docker container ls -a | all containers |
Docker Einführung
Docker installieren:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh
Falls kein curl installiert: apt install curl
Wenn man nicht mit dem Nutzer Root arbeitet, sollte man den aktuellen Benutzer berechtigen:
sudo usermod -aG docker $USER
Mit Docker arbeiten
- Laufende Container auflisten:
docker ps - Alle Container auflisten (auch gestoppte):
docker ps -a - Einen Container anhalten:
docker stop <Containername>(den Namen findet man mitdocker ps heraus) - Einen gestoppten Container endgültig löschen:
docker rm <Containername>
Einen simplen Webserver starten
Der Container aus dem Image nginx fährt mit folgendem Befehl hoch:
docker run -p 80:80 nginx
Die eigene IP-Adresse erhält man mit ip a
Arbeiten mit Docker-Compose
Legt euch am besten einen eigenen Ordner für das Docker-Projekt an, um Ordnung zu halten. Die Datei docker-compose.yml enthält die Definition der Container.
Bearbeitet wird die Datei mit:
nano docker-compose.yml
Die Inhalte findet ihr unten in diesem GitHub-Gist. Den Texteditor Nano beendet man mit: Strg+X, dann Y
Die Compose-Zusammenstellung hochfahren:
docker-compose up -d
Will man die Container updaten, lädt man die neuen Images mit
docker-compose pull
Eine oder mehrere Docker-Compose-Dateien?
Das ist definitiv Geschmachssache und hängt von der Umgebung ab. Wenn man mehr als ein Projekt (zum Beispiel einen Blog und ein Pihole) auf einem Server betreibt, sollte man für jedes einen Ordner anlegen und darin eine Docker-Compose-Datei ablegen. Die nützlichen Helfer wie Portainer und Watchtower kommen zusammen in eine weitere Datei. Dann kann man mit docker compose downgezielt Teile der Umgebung herunterfahren.
# Die Docker-Compose-Zusammenstellung für Pihole (https://hub.docker.com/r/pihole/pihole)
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
environment:
TZ: 'Europe/Berlin'
# WEBPASSWORD: 'set a secure password here or it will be random'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
cap_add:
- NET_ADMIN
restart: unless-stopped
# Docker-Compose-Datei für Portainer (https://hub.docker.com/r/portainer/portainer-ce). Antwortet auf Port 9000 des Servers
services:
portainer:
image: portainer/portainer-ce
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer_data:/data
restart: always
# Docker-Compose-Datei für Watchtower (https://hub.docker.com/r/containrrr/watchtower)
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Docker, Docker-Compose und Portainer installieren
Weitere Infos zu Docker: Docker Einführung
sudo apt update && sudo apt upgrade -y
Docker Installation auf Ubuntu
Führe folgende Befehle als root bzw. mit sudo aus:
-
Alle alten Docker-Pakete entfernen (optional, falls vorher installiert):
-
sudo apt-get remove docker docker-engine docker.io containerd runc
-
-
Installationsskript herunterladen und ausführbar machen:
curl -fsSL https://get.docker.com -o get-docker.sh chmod +x get-docker.sh -
Docker installieren:
sudo sh ./get-docker.sh -
Docker-Status prüfen:
sudo systemctl status docker
Du kannst die Gruppenrechte für deinen User noch anpassen, um Docker ohne sudo verwenden zu können:
sudo usermod -aG docker $USER
Danach ab- und neu anmelden.
Docker Compose Installation
Empfohlen wird das aktuelle Compose-Plugin via apt oder als Binary:
Variante 1: Über das Docker Compose Plugin (apt-basiert):
-
Repository aktualisieren:
sudo apt-get update sudo apt-get install docker-compose-plugin -
Installation prüfen:
docker compose version
4. Portainer installieren
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Fertig!
Watchtower
Watchtower aktuallisiert auch regelmäßig die Docker Container
Einmal ausführen
docker run --rm \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=hermann.pelzer@mail.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=hp1984@posteo.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.mail.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=hermann.pelzer \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=************ \
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
containrrr/watchtower \
--run-once \
--cleanup \
--include-restarting \
--rolling-restart \
--include-stopped
Regelmäßig ausführen
docker run -it -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=hermann.pelzer@mail.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=hp1984@posteo.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.mail.de \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=hermann.pelzer \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=************* \
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
containrrr/watchtower:latest \
--cleanup \
--include-restarting \
--rolling-restart \
--include-stopped \
--interval 43200