====== 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