Mein Verständnis war, dass die hauptsächliche Einschränkung beim Ausführen von Docker auf anderen Betriebssystemen die Linux-Netzwerkcontainer waren, die dies ermöglichten. (Auf jeden Fall für Macs).
Kürzlich hat Microsoft eine Beta- Version eines Ubuntu- Linux- Benutzermodus angekündigt , der nativ unter Windows 10 ausgeführt wird. Damit können unter Windows im ELF-Format kompilierte Binärdateien ausgeführt werden (im Gegensatz zu Cygwin, für das eine Kompilierung erforderlich ist).
Meine Frage ist: Können Sie Docker nativ auf dem neuen Windows 10 (Ubuntu) Bash-Userspace ausführen?
bash
Userspace. Es ist ein echter, ziemlich vollständiger Linux-Benutzerbereich, aber ohne X-Windows, dh nur Text. Wenn Sie "bash" sagen, wird die Beschränkung nur auf Text sehr gut kommuniziert.Antworten:
Sie können Docker Desktop für Windows als Engine und Docker für Linux als Client in WSL unter Ubuntu / Debian unter Windows verwenden. Verbinden Sie sie über TCP.
Installieren Sie Docker Desktop für Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows Wenn Sie Windows-Container anstelle von Linux-Containern verwenden möchten, können beide Container vom Linux-Docker-Client in verwaltet werden der bash benutzerraum.
Seit Version 17.03.1-ce-win12 (12058) müssen Sie Expose-Dämon unter tcp: // localhost: 2375 ohne TLS aktivieren , damit der Linux Docker-Client weiterhin über TCP mit dem Windows Docker-Dämon kommunizieren kann
Folge diesen Schritten:
oder
Um es dauerhaft zu machen:
Fügen Sie die entsprechenden Variablen zu .bashrc hinzu
Natürlich können Sie docker-compose installieren
Oder mit Python Pip
Und Bash-Vervollständigung. Der beste Teil:
Ich habe es mit der Version 2.1.0.1 (37199) von Docker Desktop unter Verwendung von Hyper-V getestet:
Bände
Seien Sie vorsichtig, wenn Sie Volumes hinzufügen. Der Pfad
C:\dir
wird sowohl/mnt/c/dir
in der WSL als auch in/c/dir/
der Docker-Engine angezeigt. Sie können es dauerhaft überwinden:Sie müssen WSL beenden und neu laden, nachdem Sie die Änderung an wsl.conf vorgenommen haben, damit WSL Ihre Änderungen beim Start einliest.
AKTUALISIEREN
from: Was ist neu in der Befehlszeile in Windows 10, Version 1803?
AKTUALISIEREN
Dieses Skript und die Verwendung von Unix Sockets waren in Pengwins Pengwin-Setup enthalten.
Grüße
quelle
docker.exe
das Docker-Subsystem mit direkt abfragen / interagieren. Beachten Sie jedoch, dass der Docker für Windows die Windows-Variablen und -Konfigurationen verwendet.Ab sofort (April 2016) lautet die Antwort:
Wir wissen es noch nicht (aber wahrscheinlich nicht).
Die Fakten
Die Spekulation
Die Frage ist also, ob die von Docker benötigten Systemaufrufe (unter anderem für Chroot und Namespaces) implementiert wurden oder nicht. Die Antwort ist wahrscheinlich "nein". Docker erfordert ziemlich ausgefeilte (und Linux-spezifische) Funktionen für das Prozess- und Ressourcenmanagement und die Prozessisolierung. Obwohl es wahrscheinlich möglich ist, all dies unter Windows zu replizieren, wäre dies eine Menge Arbeit, und da das Ziel dieser Windows-Funktion darin zu bestehen scheint, Linux-Userspace-Programme auszuführen, ist es unwahrscheinlich, dass sie die ganze Arbeit erledigt haben (und sie geheim gehalten haben). .
Soweit ich das beurteilen kann, gibt es jedoch keine endgültigen Informationen.
Bestehende Docker-Ports
Wenn Microsoft entscheidet, dass Docker in Windows 10 unterstützt werden soll, können sie dies wahrscheinlich anbieten. Es gibt einige Präzedenzfälle, um Docker auf einen anderen Kernel zu portieren:
quelle
Die erste Insider-Vorschau wurde gestern veröffentlicht. Ich habe versucht, docker zu installieren, aber es schlägt mit folgendem fehl:
Es scheint also, dass es für die erste Vorschau derzeit nicht funktioniert. Wie viele Leute auch spekuliert haben, es könnte in einer zukünftigen Version funktionieren.
quelle
docker ps
Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
Nein das ist nicht möglich.
Docker benötigt mehrere Dinge, um Container auszuführen:
Dies sind alles Kernel-Funktionen, die in Linux implementiert sind. Leider verfügen die meisten von ihnen nicht über eine ähnliche Funktion in Windows, die als Ersatz verwendet werden kann (und auch nicht in dem Linux-Subsystem, das Microsoft im Windows-Kernel implementiert hat). All dies muss vom Betriebssystem bereitgestellt werden.
quelle
chroot
, erkennt bereits , dass die Ubuntu - Umgebung eine andere Wurzel als der WIN32 man hat.Ab dem Creator Update (veröffentlicht am 13. Juni 2017) können Sie native ausführbare Windows-Dateien direkt in WSL ausführen. Wenn Sie Docker für Windows bereits installiert haben , können Sie einfach die
docker
unter installierten Binärdateien aufrufenC:\Program Files
. Da sie enden, ist es.exe
am einfachsten, Aliase zu erstellen. Etwas wie das Folgende in deinem.bashrc
sollte funktionieren:Dadurch werden Aliase für alle Dateien im
DOCKER_BIN
Verzeichnis erstellt:Eine Einschränkung: Sie erhalten eine Fehlermeldung wie "Das aktuelle Arbeitsverzeichnis kann nicht übersetzt werden ", wenn Sie von einem Linux-Verzeichnis ausgeführt werden. Einfach
cd
in ein Windows-Verzeichnis (zB/mnt/c/Users/YourUsername
) und du solltest gut sein.quelle
docker
Binärdatei aufrufen und dies nur über die Linux-Shell. Ich bin mir nicht sicher, ob es einen guten Weg gibt, das zu erreichen.Sobald Docker 1.12 freigegeben und der Linux Docker-Client getrennt ist, sollten Sie in der Lage sein, den Docker- Client in Windows 10 bash auszuführen .
Wenn Sie einen Docker-Windows-Client haben, hört sich das vielleicht nicht so an, aber es ist nützlich, wenn Sie Linux-Toolchains haben, die Docker für die clientseitige Funktionalität enthalten.
quelle
In Windows 10 Version 1607 Build 1493.10 können Sie es erfolgreich auf Ubuntu Bash installieren, aber es funktioniert nicht :(
Eine einfache "Docker-Version" sagt Ihnen:
Wenn Sie dann "sudo docker -d" ausführen, erhalten Sie folgende Fehlermeldung:
Das ist also definitiv ein Stopper von der Bash-Seite.
Trotzdem können Sie Docker für Windows installieren und es funktioniert wie ein Zauber, Sie können natürlich Linux-Server und alles, was Sie brauchen, bereitstellen.
quelle
Stand September 2016, Nr.
Alle aktuellen Implementierungen von Docker unter Windows verwenden Virtualisierung. Docker 1.12 verwendet unter Windows einen Hypervisor, wodurch der Vorteil der Containerisierung gegenüber der Virtualisierung beseitigt wird.
Docker braucht mehr als nur Linux-Systemaufrufe.
Es benötigt Prozesssteuerungsgruppen (cgroups), ein stapelbares Dateisystem (aufs) sowie andere Linux-basierte Systeme außerhalb des Kernels.
Weder cgroups noch aufs sind nativ im Windows 10 Kernel.
Eine Implementierung von Windows Server 2016 finden Sie hier: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server . Damit werden jedoch nur einige Windows-Dienste ausgeführt, z. B. IIS, und nicht Ubuntu
quelle
Docker funktioniert derzeit nicht im aktuellen Build (14316) - vorausgesetzt, Sie können es installieren.
quelle
Von: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
quelle