docker und docker-compose: Praktische Vorteile

Ich betreibe im privaten „Produktivbetrieb“ eigene und Fremdsoftware mit docker bzw. docker-compose. Dies bringt in meinen Augen einige Vorteile im Betrieb. Welche sind das für mich?

Schnellere Installation und Konfiguration mit Docker-Compose

Insbesondere wenn man das Compose-File schon hat, ist die Installation einfach und erfolgt immer mit Hilfe der gleichen Mittel – nämlich das, was Docker-Compose so bietet: Environment, mounted Volumes etc. Es bleibt ja bei „konventioneller Installation“ nicht beim apt-get install... – insbesondere, wenn mehrere Komponenten zusammenspielen. Typisch sind ja z.B. Server + mylsql + mysql-Backup. Bei Installation via Docker-Compose sammelt sich (zumindest bei guten Images) die Konfiguration im Compose-File und das ähnelt sich bei den verschiedenen Installationen.

Einfache Updates

Updates laufen immer gleich: Ich mach das derzeit mit einem Cron-Job, der im Kern ein docker-compose up -d --remove-orphans macht. Es gibt aber auch Images, die das automatisieren (z.B. watchtower) – habe ich aber noch nicht ausprobiert.

Updates sind ja v.a. bei nicht-apt-Sachen (z.B. Confluence) u.U. mühsam. Bei Docker/-Compose weiß man immer, wo man hinfassen muss, weil es immer gleich läuft.

Einfaches Datei-Backup

Alle Daten liegen bei mir in Datenvolumes, welche ich alle unter /opt/dockervolumes sammle. Dies liegt auf einem NFS-Server und wird von allen Dockerhosts gemountet.

  • Nur dieses Verzeichnis muss zentral gesichtert werden.
  • D.h. nur die wichtigen Dateien werden gesichtert – und nicht immer das ganze System.
  • Neue Volumes werden „autmatisch“ mit gesichert, wenn ich sie im zentralen /opt/dockervolumes ablege.

Einfaches mysql-Backup

mysql-Backup erledige ich immer über mein backup-all-mysql, in dem ich ins Compose-File einen Abschnitt wie folgenden einfüge:

  backup-mysql:
    image: dsteinkopf/backup-all-mysql:latest
    restart: always
    environment:
      - BACKUP_INTERVAL=86400
      - BACKUP_FIRSTDELAY=4000
      - 'MYSQL_CONNECTION_PARAMS=--user=root --host=db --password=verysecret'
    links:
      - db
    volumes:
      - /opt/dockervolumes/nextcloud/mysql-backup:/var/dbdumps
    networks:
      - mynet

Security

  • Container sind voreinander geschützt (bzw. schützbar).
  • feinere Granularität als VMs.
  • weitreichende Sicherheitseinstellungen möglich.

Ressourcen

Viel geringerer Ressourcenverbrauch als VMs – v.a. weniger (teurer) Arbeitsspeicher.

Einheitlichkeit, Flexibilität, Übersicht durch Docker-Compose

  • Leichteres Umziehen, auf andere Maschine
  • Alle Konfigs immer gleichermaßen im Compose-File (diese liegen bei mir alle in /opt/compose).

P.S. Über Feedback (Zustimmung, Widerspruch, eigene Erfahrungen) würde ich mich freuen.

Kommentar verfassen