Docker für den produktiven Betrieb

  • Welche Vorteile habe ich, wenn ich den Mailserver und Webserver in einem Container betreibe? Ist das der Sicherheitsvorteil oder die schöne Verwaltung, Sicherheit? Welchen Mehrwert bietet mir Docker, abseits in Entwicklungsumgebungen?

  • Docker wurde in erster Linie nicht für Sicherheitsaspekte geschrieben, sondern aus Portabilitätsgründen.


    Wenn du wirklich eine harte Trennung zwischen deinen Diensten möchtest, würde ich immer auf einen Hypervisor zurückgreifen, in diesem Fall KVM - sprich: Dienste die getrennt laufen sollen, sollten auf verschiedenen Netcup VMs laufen.


    Möchtest du nur eine lose Diensttrennung haben: nur zu.


    Bei Webservern würde ich eher darauf verzichten - dafür sind sie nicht monolithisch genug.

    Du musst im Container dann immer noch einen Process Manager mitschleppen - da gibt es aber keinen Offiziellen.


    Docker ist eigentlich für App Container da, viele nutzen sie als OS Container (viele Images kommen ja auch mit einem gesamten GNU Userspace daher). Das leistet Docker dann einfach nicht.

  • Ich sage es einfach mal so. Wenn sich die Frage überhaupt erst stellt, ob Docker oder nicht, dann lautet die Antwort in den allermeisten Fällen: Nein. Docker oder allgemein Container setzt man meist dann ein, wenn der konkrete Bedarf danach besteht.

    Die Frage nach der Sicherheit ist etwas schwierig. Theoretisch sollten Container sicherer sein. Praktisch sind sie es meist nicht. Es ist mit viel Aufwand verbunden das wirklich sicherer als im Vergleich zu einem klassischen Setup zu betreiben. Gerade mit einem Mailserver würde ich da vielleicht nicht unbedingt mit anfangen.

    Die Verwaltung ist ein wenig Ansichtssache. Schöner kann Docker natürlich sein, wenn man viel automatisiert. Ohne wirkliche Automatisierung macht Docker nicht wirklich Sinn.

  • Docker bietet halt noch den Vorteil von Infrastructure as Code. Bedeutet, dass Installationsskripte mit im Repository liegen können und Konfigurationen dann per Umgebungsvariablen/Secrets spezifisch je Container gesetzt werden können. Auch kann jeder Container seine eigenen Dependencies haben, weil jeder Container quasi seine eigene Verzeichnisstruktur ab / hat. Durch die Bind- und Volumemounts ist je Container klar definiert, welche Verzeichnisse benötigt werden. Diese können dann im Fall der Fälle sehr einfach auf ein anderes System migriert werden.


    Zudem ist das Hostsystem dann egal. Ob das dann Debian, Suse oder RedHat ist, oder ein Cloud-Anbieter wie AWS, Azure, Openshift ist, spielt (bis auf ein paar Fallstricke beispielsweise beim mounten von Verzeichnissen) keine Rolle.


    Ich setze inzwischen ausschließlich auf Container. Sowohl auf meinem Homeserver, als auch auf dem vServer. Im Job gehen wir inzwischen immer auf Kubernetes, sofern mit dem Kunden vereinbar.


    Die Verwaltung ist ein wenig Ansichtssache. Schöner kann Docker natürlich sein, wenn man viel automatisiert. Ohne wirkliche Automatisierung macht Docker nicht wirklich Sinn.

    Sehe ich nicht so. Selbst wenn ich das Erstellen von Containern nicht automatisiere, bietet Docker mir den Vorteil, dass meine Images durch die Tags versioniert sind, ich je Container ein Monitoring einrichten kann(Prometeus, Grafana)

    Außerdem betreibt man ja im Dockerkontext fast immer einen Reverseproxy wie HaProxy, Nginx oder Traefik. Diese bieten dann zumeist auch noch sehr einfach die Einbindung von Letsencrypt, per http Challenge sogar ootb. Hostname und Port festlegen und der Dienst ist online. Leichter kann man eine Webseite meiner Meinung nach kaum hosten. Selbst mit Plesk oder einem ähnlichen Panel könnte ich vermutlich eine Webseite nicht so schnell bereitstellen wie auf einem Dockerhost.