Docker unter Windows

7

7bits

Gast
Hallo,
für welche Art von Programmen ist Docker geeignet, können mit Docker auch installierte Windows-Programme (mit Windows Registry-Eintrag) isoliert werden? Konkret: Ich habe einen Ordner mit 3 Windows-Tools, können diese in ein Docker-Image?
 
Docker geht nicht ohne Linux. Bei "Windows für Docker" muss im Hintergrund entweder eine Linux VM oder das WSL2 laufen.

-> Docker für "Windows" ist generell eher kacke. Docker basiert nun mal auf namespaces, chroot und cgroups. Alles Features vom Linux Kernel
 
  • Gefällt mir
Reaktionen: jonderson und [ChAoZ]
Cokocool schrieb:
Docker geht nicht ohne Linux. Bei "Windows für Docker" muss im Hintergrund entweder eine Linux VM oder das WSL2 laufen.
Windows hat auch Container - er möchte Windows Programme in einen Container stecken.

Cokocool schrieb:
-> Docker für "Windows" ist generell eher kacke.
Selbst Docker for Windows mit Linuxcontainern läuft einwandfrei (via WSL2).
 
Ich würde auch auf eine VM (headless) oder eben natives Linux setzen statt Windows. Selbst wenn es läuft, ist es nicht üblich und du wirst kaum Hilfe im Net finden falls du Probleme bekommst.
 
[ChAoZ] schrieb:
Ich würde auch auf eine VM (headless) oder eben natives Linux setzen statt Windows.
Darauf wird er wohl kaum Windows-Programme zum Laufen bekommen.
Oder soll er sich einen Linuxcontainer basteln, da WINE draufpacken und beten, dass das Windowsprogramm überhaupt läuft?
 
gibt es eine Liste mit Approved Tools, die mit Docker laufen udn für welche Art von Tools ist Docker denn geeignet (Linux, Web etc.) ?
 
Die "Liste mit Approved Tool" nennt man Registry. Dort bekommst du fertige Images. Prinzipiell ist fast jede Software dafür geeignet. Mit GUIs wird es manchmal etwas kompliziert.
Ich denke daher aber, dass du das Thema von der falschen Seite angehst. Was willst du denn machen?
Ansonsten ist es auch empfehlenswert sich erstmal in das Thema einzulesen, da es durchaus recht komplex ist/sein kann (kommt drauf an).

E: Ach, es geht um Windows-Container. Das würde ich eigentlich nicht empfehlen, Linux-Container sind da schon wesentlich sinnvoller.
Bei normaler Anwendersoftware ist das ganze aber ohnehin recht sinnlos, außer man hat ein spezielles Ziel. Den Eindruck habe ich aber bei dir nicht, evtl. liege ich da aber auch falsch? Auf jeden Fall solltest du uns darlegen, was du überhaupt konkret vorhast.
 
  • Gefällt mir
Reaktionen: NJay und new Account()
aktuell habe ich Docker for Windows Desktop installiert und mache die ersten Schritte damit.

Ich habe mehree Applikationsprogramme (.Net, Eclipse etc.) in einem Ordner und würde diese gerne an andere Leute verteilen, damit die mit der gleichen Umgebung arbeiten können, ohne nochmal alles neu konfigurieren zu müssen. Da ja auch Windows-Programme mit Registry-Einträgen verwendet werden würde ein einfaches Kopieren nicht ausreichen. VM oder Docker?
 
  • Gefällt mir
Reaktionen: new Account()
Eclipse? Da kann man auch Konfigurationen exportieren.
.Net ist ein Framework. Du wirfst da ein paar Sachen durcheinander. So kann man leider überhaupt nicht sagen, ob das funktionieren kann.
Anhand deiner bisherigen Aussagen, kann zumindest ich jetzt nicht beurteilen, ob das mit Docker überhaupt möglich ist oder eine VM sogar besser geeignet wäre.
 
Docker ist immer dann interessant, wenn man wirklich kleine Einheiten von Programmen verwenden möchten, die man jederzeit wegwerfen und wieder neu starten kann. 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. Für sowas wie mal ein Web-/Tomcatsserver oder einen Karaf/Kafka Container, der beliebig austauschbar und skalierbar sein soll, ist das an sich eine gute Idee. Nur sehe ich auch bei uns den Trend, daß dann eher ein skalierbarer Microservice verwendet wird, weil doch leider zugänglich als Docker.

Ich muß selbst nach 5 Jahren Docker zugeben, ich werde damit einfach nicht so recht warm. Mir liegen Microservices und VMs eher. OpenShift mit Kubernetics ist ja auch wirklich eine feine Sache, wenn man gute Ressourcen hat, und die doch komplexe Einrichtung nicht scheut. Aber für ein "paar" wenige Services ist das einfach überdimensioniert, und man muß mit vielen anderen Problemen kämpfen wie ein gutes Storagesystem usw.

In meinen Augen ist eine VM zwar "größer", aber auch für Anfänger und Laien eher handhabbar als Docker. Wenn man das gut macht, hat man dann zu Docker jetzt auch nicht die großen Nachteile, wie immer behauptet wird. Und man ist bei VMs nicht so von der Umgebung des Hosts abhängig wie bei Docker.
 
Natürlich nicht, da liegst Du vollkommen richtig. Faktisch setzen wir ja auch alles Querbeet ein, wo was am besten paßt, aber das zu warten und zu pflegen ist eben sehr aufwendig und manchmal auch nicht lustig.
 
burglar225 schrieb:
Eclipse? Da kann man auch Konfigurationen exportieren.
.Net ist ein Framework. Du wirfst da ein paar Sachen durcheinander. So kann man leider überhaupt nicht sagen, ob das funktionieren kann.
Anhand deiner bisherigen Aussagen, kann zumindest ich jetzt nicht beurteilen, ob das mit Docker überhaupt möglich ist oder eine VM sogar besser geeignet wäre.
ich würde Docker doch gerne für GUI-Programme verwenden (z.B. Notepad++, Gimp etc.) geht das nicht so gut unter Windows?
Ergänzung ()

burglar225 schrieb:
Die "Liste mit Approved Tool" nennt man Registry. Dort bekommst du fertige Images. Prinzipiell ist fast jede Software dafür geeignet. Mit GUIs wird es manchmal etwas kompliziert.
Ich denke daher aber, dass du das Thema von der falschen Seite angehst. Was willst du denn machen?
Ansonsten ist es auch empfehlenswert sich erstmal in das Thema einzulesen, da es durchaus recht komplex ist/sein kann (kommt drauf an).

E: Ach, es geht um Windows-Container. Das würde ich eigentlich nicht empfehlen, Linux-Container sind da schon wesentlich sinnvoller.
Bei normaler Anwendersoftware ist das ganze aber ohnehin recht sinnlos, außer man hat ein spezielles Ziel. Den Eindruck habe ich aber bei dir nicht, evtl. liege ich da aber auch falsch? Auf jeden Fall solltest du uns darlegen, was du überhaupt konkret vorhast.

Ja , ich würde das hauptsächlich für Windows Anwendersoftware mit GUI verwenden wollen und erhoffe mir, dass Docker diese Tools lange Zeit im Container archivieren kann, so dass in ferner Zukunft alles immer noch funktioniert!
 
Zuletzt bearbeitet von einem Moderator:
7bits schrieb:
ich würde Docker doch gerne für GUI-Programme verwenden (z.B. Notepad++, Gimp etc.) geht das nicht so gut unter Windows?
Das halte ich für vollkommen sinnlos, warum willst Du sowas dockern? :confused_alt: Wie gesagt, bei Docker ist vieles vom Host abhängig. Wenn Du beispielsweise bestimmte .Net-DLLs brauchst, nützt Dir das gar nichts, wenn Du das dockerst und und später auf einem anderen Host diese DLL nicht hast, dann funktioniert das eben nicht. Und warum muß man gerade so Poppelprogramme wie Gimp und Notepad++, die sehr gut und oft aktualisiert werden, dockern? Die sind weder aufwendig zu konfigurieren, noch müssen sie skalieren. :confused_alt: Einen Proxyserver kann man dockern, eine Datenbank, Webserver, Containerservices, aber bestimmt nicht Gimp oder Notepad++.

Bei seltenen und schwierigen Programmen würde ich das ja noch verstehen (so wie vor einiger Zeit jemand mit so einem Programm für die Nähmaschine seiner Mutter ankam). Und wenn Du unbedingt diese Programme so absichern müßtest (was ich ebenso für diese Programme sinnlos halte), dann wäre eine VM hier die bessere Lösung.
 
Zuletzt bearbeitet:
Ziel ist es eine VM durch Docker unter Windows zu ersetzen, um damit kleine Images hinzubekommen... Unter Windows ist doch Hyper-V Bestandteil der Docker Installation, wird das damit nicht gelöst (fehlende .NET DLLs)?

Bisher hatte ich mir die Docker-Engine nicht genauer angesehen, daher die Fragen...
Wenn ich verstehe wie das beispielsweise mit Notepadd+ aufgesetzt werden muss, dann könnte ich das auch anhand anderer Apps ausprobieren.
Macht es Sinn erforderliche Windows-Installationsdateien (.Net) in Docker zu Containern, die dann per Dockerfile nach dem Öffnen automatisch installiert werden?
 
Zuletzt bearbeitet von einem Moderator:
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.
 
Warum macht man Apps in Container? Das ist die Grundfrage, die man sich stellen muß. In meinen Augen ist das Containern dann wichtig, wenn man
  1. Isolierte Anwendungen benötigt
  2. Container oft in verschiedene Umgebungen verteilen muß
Und meine Frage an Dich, warum mußt Du auf einem PC Teamspeak, JDownloader und Co. containeren? Außer mehr Aufwand sehe ich da überhaupt keine Vorteil zu einer normalen Installation. Aus meiner Sicht spart Du Dir hier rein gar nichts, weil es eh Anwendungen sind, die bei Dir laufen.
 
Zurück
Oben