Docker-Compose

Änderungsstand: 2020-04-21

Folgender Schritt ist nicht unbedingt nötig, aber erleichtert, vor allem Umsteiger von normalem Docker auf Docker-Compose, so einiges.

Im OMV5 das Docker-Plugin deinstallieren. Wenn fertig, ALLES, was sich im /var/lib/docker/ befindet löschen.

rm -r /var/lib/docker/*

Dann im OMV5 das Docker-Plugin wieder installieren. Die gelöschten Unterordner werden wieder in einen sauberen Zustand angelegt.

Hinweis: In einer *.yml-Datei verwenden wir KEINE Tabulator-Taste sondern rücken ALLES mit Leerzeichen ein!!! Sobald man die Tab-Taste benutzt, gibt es Probleme beim Starten des Dockers!!!

Vorwort: Da es des Öfteren Probleme gibt, dass gewisse Docker zwar installiert werden, aber im Browser nicht gestartet werden können, hier ein kleiner Tip. Schon einmal angelegte Docker, legen auch ihre Config-Dateien ab, die dann beim Löschen des Dockers bestehen bleiben. Wenn dann mit unterschiedlichen Dockerversionen Versuche gemacht werden, sollte man unbedingt darauf achten, dass diese Config-Verzeichnisse vor dem Erstellen leer sind (vor Allem, wenn man experimentiert). Dieses Problem hatte ich mehrmals, bei Versuchen mit dem Docker linuxserver/emby und dem Docker /emby und bei verschiedenen WordPress-Dockern.

Tip2: Schnellerstellung des Ordners/home/dockervolumes und aller Unterordner im /home/dockervolumes-Verzeichnis, wo später die *.yml-Dateien erstellt werden (narürlich sind hier nur meine eigenen Verzeichnisse angegeben):

mkdir -p /home/dockervolumes/{mariadb,phpmyadmin,nextcloud,calibre-web,bitwarden,duplicati,emby,glances,heimdall,portainer,wordpress,minetest,mywebsql}

Fangen wir an. Was wird benötigt? Wir installieren Docker über die OMV5-Extras. Das war`s eigentlich fast schon 🙂 , das Benötigte wird mit installiert wird.

Hier ein Beispiel, den Docker „mariadb“ über compose zu starten. Kurze Erklärung der Terminal-Befehle:

  1. Einmalig den Hauptordner erstellen (ich nenne diesen „dockervolumes“ und setze diesen ins „/home“-Verzeichnis)
  2. Dort den Unterordner „mariadb“ erstellen
  3. Ins Verzeichnis „/home/dockervolumes/mariadb“ springen
  4. Die „docker-compose.yml“ erstellen.

Im Terminal:

mkdir /home/dockervolumes
mkdir /home/dockervolumes/mariadb
cd /home/dockervolumes/mariadb
nano docker-compose.yml

Folgendes dort einfügen (vorher GEHEIMES_PASSWORT mit Eurem Passwort ersetzen und Eure ID`s und Euren Pfad überprüfen):

---
version: "2"
services:
  mariadb:
    image: linuxserver/mariadb
    container_name: mariadb
    environment:
      - PUID=1001
      - PGID=100
      - MYSQL_ROOT_PASSWORD=GEHEIMES_PASSWORT
      - TZ=Europe/Berlin
    volumes:
      - /var/lib/MariaDB:/config
    ports:
      - 3306:3306
    restart: unless-stopped

Speichern mit Strg-x, y, Enter

Quelle: https://hub.docker.com/r/linuxserver/mariadb

Anschließend die „yml“ starten mit

docker-compose up -d

Darauf achten, dass man sich noch im mariadb-Verzeichnis befindet.

Das Dockerimage wird heruntergeladen und der Docker mit der eingetragenen Konfiguration gestartet.

Fertig.

Um ALTE Dockerimages, die nicht mehr verwendet werden, zu löschen, folgendes verwenden (funktioniert nur im Terminal):

docker image prune -a

Oder als Cron-Job, ohne Eingabeaufforderung:

docker image prune -a -f

Zusätzliche Infos:

Falls der Docker nochmal gelöscht werden muss, einfach im Cockpit auf „Docker Container“ und den mariadb-Container anklicken, oben rechts auf Stoppen und dann oben rechts auf Löschen.

oder mit folgenden Befehlen erst Verzeichnis wählen, dann Docker Stoppen und dann Docker Löschen:

cd /home/dockervolumes/mariadb
docker-compose stop
docker-compose rm

Um ALLE Docker zu stoppen und zu löschen, folgende 2 Befehle eingeben.

sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)

Um ALLE Docker-Images zu löschen, folgendes eingeben:

sudo docker rmi $(sudo docker images -qf "dangling=true")

Was sind jetzt die Vorteile gegenüber der handelsüblichen Konfiguration? Nun, da gibt es einige:

  • Aufgrund der einmal angelegten *.yml-Datei sind die eingerichteten Konfigurationsdaten des Dockers quasi immer vorhanden, selbst nach einem Crash. Somit spart man sich das mühselige Neu-Erstellen. Kleiner Tip: Diese *.yml-Datei kann man auch extern sichern 🙂
  • Das Update des Containers ist sehr einfach gestaltet. Immer mehr Dockerentwickler raten übrigens von der Benutzung des Watchtower-Dockers ab!
  • Geht man etwas mehr ins Detail, sind umfangreiche Sicherheitseinstellungen realisierbar
  • Um ein Backup aller eingerichteten DockerConfigs (nicht die Inhalte der Verzeichnisse) zu erstellen, sichert man einfach nur den dafür erstellten Ordner /home/dockervolumes oder den Ordner, den Ihr dazu verwenden wollt. Da dort die Docker-Config-Infos in den Script-Dateien liegen, ist es ein Einfaches, alles schnellstmöglich wiederherzustellen. Beachtet aber, wenn die ConfigFiles im /var/lib/ -Verzeichnis legen, dass nach einem Crash der Systemplatte diese weg sind. Man kann diese angelegten Inhalte der Config-Files aber wunderbar mit Duplicati Sichern.

Unter „Docker & Docker Compose“ – „Docker-Compose“ – „Alles zusammengefasst“ erkläre ich, wie ich die Updates Aller Docker, per Script, mit nur einem Befehl realisiere.