Nachdem nun Docker und Docker-Compose installiert wurden, kann gleich mal getestet werden, ob alles funktioniert.
Dazu nutze ich PiHole und Portainer und ich nutze beides mit Docker-compose. Der Vorteil liegt darin, dass ich eine Datei „docker-compose“ habe und nicht einen langen Start-Befehl eingeben muss.
Allgemeines
Die Gretchenfrage ist nun, wo lege ich die Docker-Compose-Dateien ab. Grundsätzlich ist es dem Linux-system egal, wo man die Dateien ablegt, solange man pro Docker-Compose-Applikation einen eigenen Ordner hat. Grundsätzlich sollten auch alle User darauf zugreifen können, welche Docker auf einer Maschine verwalten.
Der FHS (Filesystem Hierarchy Standard) zu folge, wäre der Ordner „/srv“ wohl der richtige Ordner.
Man kann aber auch einen Ordner ausserhalb der Linux-Vorgaben anlegen.
Aber das soll für den kurzen Einstieg keine Rolle spielen, wehalb ich für diesen Eintrag erstmal in meinem Homeverzeichnis bleibe.
Ich starte einfach mit dem Container „PiHole“
PiHole
Das schöne an PiHole ist, dass man beim Herumspielen auch schon sofort ein Ergenbis hat.
Ich suche PiHole auf DockerHub. Im Suchfeld einfach „PiHole“ eingeben und schon bekommt man einige Treffer. Ich nehme das Image „pihole/pihole“.
Öffnet man den Suchtreffer, bekommt man eine Docker-Compose-Beipieldatei.
Bei Docker-Compose können in das docker-compose.yaml-File auch Variablen übergeben werden. Dafür gibt es die versteckte „.env“-Datei.
Zuerst lege ich im Homeverzeichnis „~“ ein Unterverzeichnis „docker“ and und darin ein Verzeichnis „pihole“
In dieses Verzeichnis „~/docker/pihole“ lege ich die 2 Dateien ab.
Hier die beiden Dateien:
Zuerst die das „docker-cpompose.yaml“.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
version: "3" # More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/ services: pihole: container_name: pihole hostname: ${HOSTNAME} image: pihole/pihole:latest ports: - "53:53/tcp" - "53:53/udp" #- "67:67/udp" - "445:443/tcp" - "85:80/tcp" environment: TZ: ${TZ} WEBPASSWORD: ${WEBPASSWORD} # Volumes store your data between container upgrades volumes: - './etc-pihole/:/etc/pihole/' - './etc-dnsmasq.d/:/etc/dnsmasq.d/' # Recommended but not required (DHCP needs NET_ADMIN) # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities cap_add: - NET_ADMIN restart: unless-stopped |
Wie man sieht, habe ich hier den Hostnamen, die Zeitzone und das Webpasswort für Variablen angepasst.
Diese übergebe ich mit der „.env“-Datein
1 2 3 |
TZ=Europe/Berlin WEBPASSWORD=ChangeMe HOSTNAME=PiholeDocker |
Zeit den Container zu starten:
1 2 |
cd ~/docker/pihole docker-compose up -d |
ob der Container Läuft kann man mit „docker ps“ prüfen.
1 2 3 4 |
testuser@test01:~/docker/pihole$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59dc3b25d741 pihole/pihole:latest "/s6-init" About a minute ago Up 56 seconds (healthy) 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, 67/udp, 0.0.0.0:85->80/tcp, 0.0.0.0:445->443/tcp pihole testuser@test01:~/docker/pihole$ |
Im „docker-compose.yaml“-file habe ich angegeben, dass der Port 85 auf den Port 80 des containers weitergeleitet werden soll.
Somit kann ich PiHole nun mit „http://:85/admin“ aufrufen.
Und mich anmelden.
Im Homeverzeichnis habe ich unter „pihole“ nun zwei weitere Dateien: „etc-dnsmasq.d“ und „etc-pihole“.
Das sind Verzeichnisse, welche dem Docker-Container im lokalen Festplattenspeicher zugewiesen sind und wo persistente Daten von Pihole gespeichert werden.
Ab jetzt brauche ich nur das Verzeichnis „pihole“ komplett zu sichern und kann es an jedem beliebigen Rechner (mit installiertem Docker-Compose) wieder ohne Datenverlust starten.
Portainer
Ich möchte auch noch kurz den Portainer installieren. Leider gibt es auf der Community-Seite nur einen Befehl zum starten. Ich würde aber gerne Docker-Compose verwenden.
Auf der Portainer-Community-Seite wird unter „Deployment“ ein Docker-Volume erzeugt, welches ich so ebenfalls nicht nutzen möchte. Ich hätte gerne wieder eine lokale Ablage.
Zuerst lege ich wieder das Verzeichnis an „~/docker/portainer“ und erzeuge darin eine „docker-compose-yaml“-Datei mit folgendem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 |
version: '3.3' services: portainer-ce: image: 'portainer/portainer-ce:2.9.3' container_name: portainer restart: always ports: - '8000:8000' - '9000:9000' volumes: - '/var/run/docker.sock:/var/run/docker.sock' - './portainer_data:/data' |
Wenn ich jetzt in das Verzeichnis „~/docker/portainer“ wechsel und den Container starte
1 |
docker-compose.yaml up -d |
Wird das Image heruntergeladen und der Container gestartet.
Mit „docker ps“ kann ich wieder controllieren, ob der Container gestartet ist:
1 2 3 4 5 |
testuser@test01:~/docker/portainer$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 81fdb4baea55 portainer/portainer-ce:2.9.3 "/portainer" 42 seconds ago Up 38 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp, 9443/tcp portainer 59dc3b25d741 pihole/pihole:latest "/s6-init" 22 minutes ago Up 22 minutes (healthy) 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, 67/udp, 0.0.0.0:85->80/tcp, 0.0.0.0:445->443/tcp pihole testuser@test01:~/docker/portainer$ |
Und man kann nun in einem Browser mit „http://:9000“ den Portainer aufrufen.
Bei der Erstanmeldung muss man noch ein Passwort vergeben
Danach kann man auch hier seine Docker-Container verwalten.
Nun kann das Spielen mit Docker beginnen ….