====== Installation von Docker ======
Installation durch vorgefertigtes Skript
curl -fsSL https://get.docker.com -o get-docker.sh
sh ./get-docker.sh
\\
Einem Benutzer das Rechte geben docker zu nutzen
usermod -aG docker USERNAME
\\
\\
==== Erster Versuch ====
\\
Welche Container laufen auf meinem Server
docker ps
\\ \\ \\
{{ :docker:dockerofficialimage.png?400|}}
\\ \\
Images auf auf [[https://hub.docker.com/|Docker Hub]]suchen. Hier wird nach einem NextCloud Image gesucht. \\
Welches Images soll ich nutzen? \\ \\ **Am besten das offizielle!** Dafür den Filter verwenden.
\\ \\ \\ \\ \\
Image downloaden uns sofort nutzen!
docker run -p 80:80 nginx
-p 80:80 sag, dass Port 80 (nummer eins) von meinem Server auf port 80 (nummer zwei) verweisen soll.
\\ \\
==== Docker-Compose ====
Man möchte jetzt nicht jeden einzelnen Container per Hand starten oder stoppen. Die Arbeit soll docker-compsoe übernehmen. Hier beschreiben wir ein der docker-compose.yml Datei welche Container wie gestartet werden sollen.
\\
Im Beispiel versuche ich ein PiHole als Container zu installieren. Dafür nutze ich den Code vom offizellen [[https://hub.docker.com/r/pihole/pihole|PiHole]] Image vom Docker Hub. Die yaml Datei wurde von mir bearbeitet und zum besseren Verständnis Kommentiert.
nano docker-compose.yml
version: "3" # Kann gelöscht werden. Brauch Docker heute nicht mehr!
services:
pihole:
container_name: pihole
image: pihole/pihole:latest # Welches Images soll genutzt werden? latest steht hier für das aktuellste Image
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
# Hier stehen die Portweiterleitungen drinn. Die Ports werden allo vom Server eins zu eins an den Container durchgereicht
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp" # Wird nur benötigt wenn PiHole = DHCP Server ansonsten löschen
- "80:80/tcp"
environment: # Umgebungsvariablen die der Container benötigt
TZ: 'Europe/Berlin ' # Zeitzone
WEBPASSWORD: 'MEINPASSWORT' # Passwort für PiHole. Steht im Klartext!
# Volumes store your data between container upgrades
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
cap_add:
- NET_ADMIN # Wird nur benötigt wenn PiHole = DHCP Server ansonsten löschen
restart: unless-stopped
\\
\\
Containter hoch fahren
docker compose up -d
Das up steht für das starten der Container die alle in der docker-compose.yml stehen. Das -d steht für detached und gibt die Kommandozeile sofort wieder frei. Fall Probleme auftreten kann man durch das weglassen von -d den Container debuggen.
\\ \\ \\
==== Portainer ====
Um Docker grafisch verwalten zu können nutze ich hier [[https://hub.docker.com/r/portainer/portainer-ce|Portainer]]. Portainer steht hier natürlich auch als image auf Docker Hub zur verfügung.
\\
Für Tools wie Portainer sollte man einen eigenen Order erstellen und darin eine eigene docker-compose.yml Datei schreiben.
\\
nano tools/docker-compose.yml
# 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:portainereinrichten.png?400|}}
\\ \\ \\ \\ \\ \\
Auf dem Browser Portainer öffnen mit http://SERVERIP:9000 \\
und Portainer fertig konfigurieren.
\\ \\ \\\\ \\ \\ \\ \\ \\ \\ \\
==== Updaten ====
Updaten der Container lässt sich durch einen docker Befehl durchfühen.
docker compose pull
\\ \\
Oder den Dockercontainer [[https://hub.docker.com/r/containrrr/watchtower|Watchtower]] installieren. Dieser fragt regelmäßig automatisch nach updates.
\\
nano toos/docker-compose.yml
...
- ./portainer_data:/data
restart: always
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
==== Docker Befehle ====
Zeige alle informationen über einen COntainer
docker inspect CONTAINERNAME
\\
Starte eine Shell von einem Container
docker exec -t -i CONTAINERNAME /bin/bash
\\
Entferne alle gestoppen Container inklusive Images
docker system prune -a