home-harmening:docker:installation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:docker:installation [2024/10/09 11:01] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1home-harmening:docker:installation [2024/11/20 14:05] (aktuell) charmening
Zeile 1: Zeile 1:
 +====== Installation von Docker ======
  
 +Installation durch vorgefertigtes Skript
 +<code>curl -fsSL https://get.docker.com -o get-docker.sh</code>
 +<code>sh ./get-docker.sh</code>
 +\\
 +Einem Benutzer das Rechte geben docker zu nutzen
 +<code>usermod -aG docker USERNAME</code>
 +\\
 +\\
 +==== Erster Versuch ====
 +\\
 +Welche Container laufen auf meinem Server
 +<code>docker ps</code>
 +\\ \\ \\ 
 +{{ :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!
 +<code> docker run -p 80:80 nginx</code>
 +-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.
 +<code>nano docker-compose.yml</code>
 +<code>
 +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
 + </code>
 +\\
 +\\
 +Containter hoch fahren
 +<code>docker compose up -d</code>
 +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. 
 +\\
 +<code>nano tools/docker-compose.yml</code>
 +<code>
 +# 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
 +</code>
 +\\ \\
 +{{ :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.
 +<code>docker compose pull</code>
 +\\ \\
 +Oder den Dockercontainer [[https://hub.docker.com/r/containrrr/watchtower|Watchtower]] installieren. Dieser fragt regelmäßig automatisch nach updates.
 +\\
 +<code>nano toos/docker-compose.yml</code>
 +<code>
 +...
 +     - ./portainer_data:/data 
 +    restart: always
 +    
 +services:
 +  watchtower:
 +    image: containrrr/watchtower
 +    volumes:
 +     - /var/run/docker.sock:/var/run/docker.sock
 +</code>
 +
 +==== Docker Befehle ====
 +Zeige alle informationen über einen COntainer
 +<code>docker inspect CONTAINERNAME</code>
 +\\
 +Starte eine Shell von einem Container
 +<code>docker exec -t -i CONTAINERNAME /bin/bash</code>
 +\\
 +Entferne alle gestoppen Container inklusive Images 
 +<code>docker system prune -a</code>