lgweb
New Member
Hallo,
ich betreibe seit einer Weile (primär privat) ein relativ klassisches Stack aus Mailserver (Postfix, Dovecot und diverse Helferlein), Webhosting (nginx mit PHP-FPM) sowie einen MySQL-Dämonen auf Debian, mittlerweile auf mehreren vServern.
Im immer fortwährenden Trend von Containerisierung, ganz speziell mit dem gehypten Docker, habe ich mich mit der Sache auch einmal auseinandergesetzt und bin nun etwas hin- und hergerissen, ob sich ein Umstieg auf eine beliebige Containerlösung für mich lohnt. Wie bereits gesagt betreibe ich mehrere vServer (bei mehreren Providern) mit nahezu identischem Stack (Unterschiede liegen in installieren PHP-Modulen, das würde sich aber angleichen lassen) und administriere die primär per Parallel-SSH. Die Configs haben sich bewährt.
Der Haken ist natürlich, dass soweit erst einmal alle Dienste nicht voneinander abgeschirmt sind. Sockets wiederum sind mit entsprechenden Berechtigungen versehen, sodass eben nur der betreffende User auf seine PHP-FPM-Instanz zugreifen kann, aber zentrale Services (speziell MySQL), die von Diensten (Postfix-User) wie Endnutzersoftware (zig CMS-Installationen) genutzt werden, sind natürlich alle auf einer Ebene zugange.
Wo ich einfach mal euren Rat oder eure Meinung brauche: Wie sinnvoll würdet ihr eine Containerisierung einer solchen Umgebung finden? Meine Überlegung wäre gewesen, den kompletten Mailstack in einen Container (bzw. mehrere, um dem Konzept "ein Service pro Container" Rechnung zu tragen) zu schieben, dann jeweils jeden PHP-FPM-Prozess in einen Container zu schieben (...was dann vermutlich einen Übergang von Sockets auf TCP mit sich zieht?), einen Reverse-Proxy davor zu schalten und so eben nach und nach alles zu dockern, wobei ich hier ein bisschen Angst vor sinnlosem Overhead habe. Ist der Sicherheitsgewinn dabei so hoch, dass eine Ausführung unter verschiedenen Systemnutzern nicht mehr mithalten kann? Abgesehen von irgendwelchen Sicherheitslücken kann ich das nicht so recht glauben. Speziell MySQL wird oft und gern so beschrieben, dass man sich pro Service einen MySQL-Container anlegt, diesen dann mit dem benötigenden Container linkt und somit möglicherweise wahnsinnig viele MySQL-Container. Sollte man hier diesen starken Overhead, den ich da vermute, wirklich akzeptieren? Bisher lege ich einfach mehrere Datenbanken und Nutzer mit generierten Passwörtern an.
Die nächste Thematik ist die Aktualisierung der enthaltenen Software. Bisher bin ich da eigentlich ziemlich hinterher; was über die Debian-Repos reinkommt, läuft bei mir. Mit Docker müsste ich ja bei jedem Update die Images ersetzen bzw. gar neu bauen, wenn ich eigene benötige - und bin darauf angewiesen, dass der Entwickler des Images sozusagen als zusätzliches Layer auch die Aktualisierung verteilt, nachdem sie vom "Upstream" kommt. Führt das nicht zu immensem Mehraufwand?
Es würde mich freuen, hier ein paar Meinungen zu hören, ohne, dass ich einen Glaubenskrieg vom Zaun brechen möchte. Ich habe selbst schon ein bisschen mit Docker zu tun gehabt, aber eher in Entwicklungsumgebungen, vor allem im Bereich der Continous Integration. Dort würde ich die Sinnhaftigkeit nie in Frage stellen, aber für die Produktivanwendung würde ich mir gern weitere Meinungen einholen.
Beste Grüße
Lukas
ich betreibe seit einer Weile (primär privat) ein relativ klassisches Stack aus Mailserver (Postfix, Dovecot und diverse Helferlein), Webhosting (nginx mit PHP-FPM) sowie einen MySQL-Dämonen auf Debian, mittlerweile auf mehreren vServern.
Im immer fortwährenden Trend von Containerisierung, ganz speziell mit dem gehypten Docker, habe ich mich mit der Sache auch einmal auseinandergesetzt und bin nun etwas hin- und hergerissen, ob sich ein Umstieg auf eine beliebige Containerlösung für mich lohnt. Wie bereits gesagt betreibe ich mehrere vServer (bei mehreren Providern) mit nahezu identischem Stack (Unterschiede liegen in installieren PHP-Modulen, das würde sich aber angleichen lassen) und administriere die primär per Parallel-SSH. Die Configs haben sich bewährt.
Der Haken ist natürlich, dass soweit erst einmal alle Dienste nicht voneinander abgeschirmt sind. Sockets wiederum sind mit entsprechenden Berechtigungen versehen, sodass eben nur der betreffende User auf seine PHP-FPM-Instanz zugreifen kann, aber zentrale Services (speziell MySQL), die von Diensten (Postfix-User) wie Endnutzersoftware (zig CMS-Installationen) genutzt werden, sind natürlich alle auf einer Ebene zugange.
Wo ich einfach mal euren Rat oder eure Meinung brauche: Wie sinnvoll würdet ihr eine Containerisierung einer solchen Umgebung finden? Meine Überlegung wäre gewesen, den kompletten Mailstack in einen Container (bzw. mehrere, um dem Konzept "ein Service pro Container" Rechnung zu tragen) zu schieben, dann jeweils jeden PHP-FPM-Prozess in einen Container zu schieben (...was dann vermutlich einen Übergang von Sockets auf TCP mit sich zieht?), einen Reverse-Proxy davor zu schalten und so eben nach und nach alles zu dockern, wobei ich hier ein bisschen Angst vor sinnlosem Overhead habe. Ist der Sicherheitsgewinn dabei so hoch, dass eine Ausführung unter verschiedenen Systemnutzern nicht mehr mithalten kann? Abgesehen von irgendwelchen Sicherheitslücken kann ich das nicht so recht glauben. Speziell MySQL wird oft und gern so beschrieben, dass man sich pro Service einen MySQL-Container anlegt, diesen dann mit dem benötigenden Container linkt und somit möglicherweise wahnsinnig viele MySQL-Container. Sollte man hier diesen starken Overhead, den ich da vermute, wirklich akzeptieren? Bisher lege ich einfach mehrere Datenbanken und Nutzer mit generierten Passwörtern an.
Die nächste Thematik ist die Aktualisierung der enthaltenen Software. Bisher bin ich da eigentlich ziemlich hinterher; was über die Debian-Repos reinkommt, läuft bei mir. Mit Docker müsste ich ja bei jedem Update die Images ersetzen bzw. gar neu bauen, wenn ich eigene benötige - und bin darauf angewiesen, dass der Entwickler des Images sozusagen als zusätzliches Layer auch die Aktualisierung verteilt, nachdem sie vom "Upstream" kommt. Führt das nicht zu immensem Mehraufwand?
Es würde mich freuen, hier ein paar Meinungen zu hören, ohne, dass ich einen Glaubenskrieg vom Zaun brechen möchte. Ich habe selbst schon ein bisschen mit Docker zu tun gehabt, aber eher in Entwicklungsumgebungen, vor allem im Bereich der Continous Integration. Dort würde ich die Sinnhaftigkeit nie in Frage stellen, aber für die Produktivanwendung würde ich mir gern weitere Meinungen einholen.
Beste Grüße
Lukas
Last edited by a moderator: