Mit der Einführung des Windows-Subsystems für Linux (WSL) gab Microsoft Entwicklern die Möglichkeit, eine GNU/Linux-Umgebung direkt unter Windows auszuführen, unverändert und ohne den Overhead einer virtuellen Maschine. Dies ist eine großartige Lösung, da viele Entwickler ein System zum Programmieren und ein anderes zur Unterhaltung verwenden.
WSL befindet sich noch in der Entwicklung, eignet sich aber derzeit für moderne Software-Entwicklungsowohl in der ersten als auch in der zweiten Version. Wenn man sich die Probleme und Fragen ansieht, die im Internet gemeldet werden, scheinen die meisten die Integration von WSL mit Docker zu betreffen, insbesondere wenn es um ein Upgrade von WSL 1 auf WSL 2 geht.
Dieser Artikel wird alle Unklarheiten beseitigen und Ihnen helfen, diesen Prozess schmerzlos zu durchlaufen. Wenn Sie WSL 1 nicht haben und WSL 2 mit Docker haben wollen, können Sie direkt zum letzten Kapitel springen.
Was werden Sie gewinnen?
- Wirklich neuester stabiler Linux-Kernel (von Microsoft abgestimmt). WSL 1 hat eine Linux-kompatible Kernel-Schnittstelle ohne den Linux-Kernel Code.
- Verbesserte Datei-IO-Leistung. Bis zu 20x schneller im Vergleich zu WSL 1 beim Entpacken eines gezippten Tarballs, etwa 2-5x schneller bei Verwendung von Git-Klon
, npm-Installation
und cmake
bei verschiedenen Projekten.
- Vollständige Systemaufruf-Kompatibilität. Linux-Binärdateien verwenden Systemaufrufe, um viele Funktionen auszuführen, z. B. den Zugriff auf Dateien, die Anforderung von Speicher, die Erstellung von Prozessen und vieles mehr. Während WSL 1 eine Übersetzungsschicht verwendete, die von der WSL TeamWSL 2 enthält einen eigenen Linux-Kernel mit vollständiger Systemaufrufkompatibilität.
- Dateien, die in einer nativen ext4-Partition auf einer virtuellen Festplatte gespeichert sind.
- Sehr einfache Möglichkeit zur Integration mit Docker.
Ich denke, für die meisten Benutzer sind die Datei-IO-Leistung und die einfache Docker-Integration ausreichende Gründe.
Los geht's!
Ich gehe davon aus, dass Sie die neueste stabile Version von Windows 10 Pro haben. Für heute ist es die Version 1909.
Windows-Insider beitreten
Derzeit ist WSL 2 für Windows 10 nur im langsamen Ring der Insider verfügbar. Soweit ich weiß, sollte die stabile Version im Mai 2020 verfügbar sein (20H1 Release). Der langsame Ring ist eine ziemlich sichere Lösung für Benutzer, die neue Funktionen etwas früher haben möchten, die bereits von Benutzern des schnellen Rings getestet wurden. Der langsame Ring erhält bis zu ein- oder zweimal im Monat System-Updates. Sie können die Änderungen der Insider-Versionen in dem Microsoft-Dokument mit dem Titel Flight Hub.
Um teilzunehmen, folgen Sie einfach der offiziellen Microsoft Leitfaden. Es ist sehr einfach und dauert etwa 15 Minuten, ohne dass persönliche Daten verloren gehen.
Upgrade von WSL 1 auf WSL 2
Folgen Sie der offiziellen Leitfaden. Es ist auch sehr einfach, ein paar Shell-Befehle und los geht's! Je nachdem, wie umfangreich Ihr Linux unter WSL 1 war, kann dies einige Zeit in Anspruch nehmen. Leider hat Microsoft keinen Fortschrittsbalken oder Informationen über die benötigte Zeit angegeben, haben Sie also etwas Geduld.
Aufräumen
Dies ist der wichtigste Teil für eine gute Zusammenarbeit zwischen WSL 2 und Docker. Nach dem Upgrade auf WSL 2 versuchen viele Benutzer, ihre Version von Docker zur Zusammenarbeit zu zwingen, ohne zu wissen, dass das Docker-Team, speziell für WSL 2, eine Version vorbereitet hat, die alles für uns tun wird. Dies ist die letzte Veröffentlichung der Docker Edge Version (ihr Beta-Name) - "Docker Desktop WSL 2 backend". Diese Version, 2.1.7.0, ist eine gut polierte und ist ein Kandidat für die kommende stabile Version.
Wer WSL 1 noch nicht hatte oder gerade eine neue Version von WSL 2 installiert hat, hat Glück und kann gleich zum letzten Kapitel springen.
Wenn Sie Ihr Docker nicht (überhaupt nicht oder nicht richtig) bereinigt und nicht die richtige Version von Docker für WSL 2 installiert haben, können einige häufige Fehler auftreten, z. B., Kann keine Verbindung zum Docker-Daemon unter tcp://localhost:2375 herstellen", "Läuft der Docker-Daemon
, usw. In den meisten Fällen verlieren Sie Zeit, wenn Sie nicht wissen, dass Sie bei der Behebung dieser Fehler einen neuen Ansatz wählen müssen. Dazu müssen Sie zunächst Docker vollständig aus der WSL und Windows entfernen, was kein offensichtlicher Schritt ist.
Das häufigste Beispiel für nicht entfernte Überreste ist der alte Docker-Ansatz zum Setzen der Umgebungsvariablen DOCKER_HOST=tcp://localhost:2375
unter WSL 1 für die Zusammenarbeit mit der Windows-Docker-Option Daemon auf tcp://localhost:2375 ohne TLS freischalten
.
Wie entfernt man Docker vollständig von WSL (Ubuntu)?
- Als die offizielle Docker docs sagen:
sudo apt-get remove docker docker-engine docker.io containerd runc
Sicherlich können Sie diese Liste noch ergänzen docker-ce
und docker-ce-cli
.
- Identifizieren Sie alle Docker-Pakete, die Sie haben, mit
dpkg -l | grep -i docker
und entfernen, wenn noch welche vorhanden sind.
- Entfernen Sie alle Rückstände:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Dieser Schritt ist für fortgeschrittene Benutzer gedacht, also seien Sie vorsichtig. Wahrscheinlich müssen Sie ihn nicht durchführen.
Alle finden Docker
Wortvorkommen und streichen Sie die, bei denen Sie sich sicher sind.
sudo find / -name "*docker*"
- Überprüfen Sie den Inhalt aller unten aufgeführten Dateien auf
Docker
Vorkommnisse wie z.B. Umgebungsvariable DOCKER_HOST=tcp://localhost:2375
.
Sie können diese Dateien mit dem Nano-Editor bearbeiten, nano ~/.bashrc
oder Visual Studio Code, Code ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profil
/etc/bash.bashrc
/etc/profil
Wie entfernt man Docker vollständig von Windows?
- Deinstallation auf normale Weise mit Windows
Apps und Funktionen
Tafel.
- Entfernen Sie alles darunter, falls vorhanden:
C:ProgrammDateienDocker
C:ProgrammeDatenDockerDesktop
C:Benutzer[BENUTZERNAME].docker
C:Benutzer[USERNAME]AnwendungDatenLokalDocker
C:Benutzer[BENUTZERNAME]AnwendungsdatenRoamingDocker
C:Benutzer[BENUTZERNAME]AppDataRoamingDocker Desktop
Was kommt als Nächstes?
Installieren Sie die neueste Version von Docker Desktop Edge von hier und befolgen Sie die Schritte auf der offiziellen docs. Es sind wirklich nur ein paar Klicks nötig.
Wenn alles gut geht, sollten Sie die Ausgabe von wsl -l -v
wie diese:
NAME ZUSTAND VERSION
Ubuntu-18.04 Läuft 2
docker-desktop Läuft 2
docker-desktop-data Läuft 2
Das war's schon. Docker hat seine eigenen WSL-Container erstellt docker-desktop
und docker-desktop-data
. Einige der verfügbaren Tutorials oder Ratschläge können verwirrend sein, weil diese Zeit Sie sollten unter Ihrer WSL-Linux-Distribution nichts installieren oder konfigurieren, was mit Docker zu tun hat.. Es ist sehr wichtig, daran zu denken. Nach der Reinigung sollte es sofort gut funktionieren.
Zusätzlich...
Die Einrichtung der WSL 2 mit Docker kann in wenigen einfachen Schritten erfolgen. Beginnen Sie mit der Aktualisierung von Paketlisten mit dem Befehl "sudo apt-get update", um sicherzustellen, dass Sie die neuesten Versionsinformationen haben. Lösen Sie alle fehlenden Abhängigkeiten mit "sudo apt-get install -y build-essential", um eine reibungslose Installation zu ermöglichen. installieren Docker-Engine mit "sudo apt-get install -y docker-engine", um Container mühelos zu erstellen, auszuführen und zu verwalten. Führen Sie "sudo docker run" gefolgt vom Namen des Images aus, um Container zu starten. Um Ihre Umgebung zu optimieren, führen Sie regelmäßig "sudo docker system prune" aus, um nicht verwendete Container zu entfernen und Speicherplatz freizugeben. Mit diesen Schritten können Sie die nahtlose Integration von WSL 2 und Docker für eine effiziente Containerisierung in Ihrem Entwicklungsworkflow nutzen.