PHuV schrieb:
Wir haben bei uns Docker wie VM im Einsatz, und der Trend geht doch wieder von manchen Docker-Anwendungen (z.B. Docker OTRS mit Docker MySQL) wieder in eine VM zu packen. Docker hat hier einfach nicht den erhoffte leichtere Wartung erbracht.
Also was an einer nicht wartungsfreien VM "einfacher" sein soll, erschließt sich mir nirgends.
Bei mir laufen:
- bind9 DNS (2 Container, bind + certbot eigens automatisiert für Wildcard Certs)
- bitwarden_rs (1 Container)
- Fresh RSS (2 Container, App + MySQL DB)
- Gitlab (1 Container, die alte Omnibus-Installation in ner eigenen VM war fehleranfälliger und definitiv nicht mehr wartungsfrei, u.a. allein schon wegen dem drunter laufendem Ubuntu und Dist Upgrades)
- JDownloader (1 Container, via xpra remote verfügbar gemacht)
- Mailu (11 Container)
- Matrix Synapse (3 Container, Synapse + Postgres + riot-web)
- Nextcloud (2 Container, App + DB)
- Plex (1 Container)
- RSS Bridge (1 Container)
- Teamspeak (3 Container, App + Web-Interface + Audiobot)
- Soft Ether VPN (1 Container)
- verschiedene Webseiten (3 Container)
Alle laufen in eigenen Subnetzen und sind voneinander getrennt. Sind insgesamt 32 Container. Nie und nimmer würde ich hier 15 VMs pro Projekt laufen lassen wollen...
Mit VMs will ich definitiv nie wieder arbeiten, weil es bedeutend wartungsintensiver ist und außerdem hab ich keine Chance die Sachen lokal zu Entwickeln und dann zu deployen, außer ich schlepp die komplette VM für die Runtime mit. :O Port Forwarding mit VMs war auch so eine Sache, die ich wirklich gehasst habe... Entfällt mit Docker ja, da es auf der Hardware selbst läuft.
Auf Arbeit haben wir auch ein Projekt, wo 15+ Container laufen (Webseite, MySQL, MongoDB, ElasticSearch, RabbitMQ, Redis, Dashboards + ein oder mehrere Container pro verschiedener RabbitMQ Consumer, je nach Skalierung, die notwendig ist). Andere Dienste für die Seite (Sentry, File Server u.ä.) laufen nicht in dem Projekt mit, sondern in ihren eigenen, sind dann aber nochmal ne Stange mehr. Dank Containern kann man auch alles in Nullkommanix lokal ausführen und entwickeln (bzw. ja lokal entwickeln und remote deployen). Es ist ja nichts Anderes, als dass die Dienste automatisiert in gewünschter Konfiguration starten. Einen Unterschied zu nem einzelnen PC oder einer VM gibts da nicht. Die Anwendungen/Container laufen genauso auf der Hardware, wie jedes andere Programm auch, allerdings durch Kernel Features getrennt. Ein Hypervisor ist nicht nötig, der auch nochmal Performance kostet.
Seit Containern macht Deployment auch mir Spaß. 😉 Meine alte Gitlab Omnibus-Installation in ner Ubuntu VM trieb mich zum Schluss in den Wahnsinn, spätestens nach dem Dist Upgrade (glaub von 12. oder 14. auf die nächst höhere LTS).
Wenn es an der falschen Konfiguration hapert, macht ihr was beim Erstellen der Images falsch. Es gibt natürlich auch echt lausige Images, wo dann immer noch manuell eingegriffen werden muss, aber in wirklichen Projekten erstellt man doch lieber alles from scratch - außer natürlich Basissachen wie Webserver, Datenbanken u.ä. und automatisiert alles. Mehr als ein Container runter- und wieder hochfahren sollte an Wartung nicht anfallen. Der Rest (Migrationen bspw.) passiert zur Runtime beim Starten der Container. Logs u.ä. werden entweder direkt an die Container Logs gegeben, irgendwo lokal geloggt oder an LogStash o.ä. weitergereicht.
@7bits Du kannst keine GUI Anwendungen in einen Container packen, sondern nur CLI Tools. RDP in nen Container geht nicht.
Hier gibts ein Issue dafür:
https://github.com/microsoft/Windows-Containers/issues/27
Das geht auch unter Linux nicht wirklich, außer du installierst dir in jedem Container die selbe Runtime und hast dann quasi 100 X-Server laufen. Was du wohl eher willst ist eine Sandbox. Oder du nutzt einfach Portable Anwendungen. Am Nächsten kommst du wie bereits gesagt damit dir VMs hochzuziehen, aber für Notepad++ (4 MB) ne komplette, zweite, unabhängige, wartungsintensive OS-Installation (8+ GB), die ja im Betrieb auch noch mehrere GB RAM benötigt ist schon extrem fragwürdig.