Tutorial zur Installation von Docker im Windows 10-Subsystem Ubuntu (WSL) (mit Bildern und Text)

Tutorial zur Installation von Docker im Windows 10-Subsystem Ubuntu (WSL) (mit Bildern und Text)

Umgebungsbeschreibung

Umgebung: Win10 Enterprise Edition + Ubuntu 18.04 LTS [WSL]

Installieren Sie Docker für Windows unter Windows 10

Jetzt verfügt Docker über ein spezielles Installationspaket für das Win10 Professional-System, für das Hyper-V aktiviert sein muss.

Aktivieren von Hyper-V

Bildbeschreibung hier einfügen

Programme und Funktionen


Bildbeschreibung hier einfügen

Aktivieren oder Deaktivieren von Windows-Funktionen


Bildbeschreibung hier einfügen

Wählen Sie Hyper-V


Bildbeschreibung hier einfügen

Installieren Sie Docker für Windows

Neueste Version von Docker für Windows

Download-Adresse: https://docs.docker.com/v17.09/docker-for-windows/install/

Klicken Sie auf „Docker für Windows [stabil] abrufen“ und laden Sie die Windows-Version herunter:

Bildbeschreibung hier einfügen

Nach Abschluss der Installation wird Docker automatisch gestartet. Ein kleines Walsymbol erscheint in der BenachrichtigungsleisteBildbeschreibung hier einfügen , was bedeutet, dass Docker ausgeführt wird.

Außerdem werden in der Tabelle drei Symbole angezeigt, wie unten dargestellt:

Wir können docker version in der Befehlszeile ausführen, um die Versionsnummer anzuzeigen, und docker run hello-world um das Testimage zum Testen zu laden.

Wenn es nicht gestartet ist, können Sie in Windows nach Docker suchen, um es zu starten:


Bildbeschreibung hier einfügen

Nach dem Start ist in der Benachrichtigungsleiste außerdem das kleine Wal-Symbol zu sehen:


Bildbeschreibung hier einfügen

Subsysteminstallation Docker-Installation

Kein Problem

leenhem@DESKTOP-7SREO20:~$ sudo apt-get install docker.io
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum erstellen
Statusinformationen werden gelesen... Fertig
docker.io ist bereits die neuste Version (18.09.7-0ubuntu1~18.04.4).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 111 nicht aktualisiert.

Es gibt ein Problem bei der Nutzung [kann nicht normal verwendet werden]

Erklärung auf der offiziellen Website

leenhem@DESKTOP-7SREO20:~$ docker ps
Verbindung zum Docker-Daemon unter unix:///var/run/docker.sock nicht möglich. Läuft der Docker-Daemon?
leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status
 * Docker läuft nicht
leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker start
 * Docker starten: docker [ OK ] 
leenhem@DESKTOP-7SREO20:~$ 
leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status
 * Docker läuft
leenhem@DESKTOP-7SREO20:~$ sudo /etc/init.d/docker status
 * Docker läuft nicht

Sie werden feststellen, dass Docker überhaupt nicht gestartet werden kann. Was soll ich jetzt tun? Überprüfen Sie unbedingt zuerst das Protokoll (/var/log/docker.log).
leenhem@DESKTOP-7SREO20:~$ tail /var/log/docker.log -n 100

time="2019-10-22T11:58:25.436968100+08:00" level=info msg="ccResolverWrapper: sende neue Adressen an cc: [{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}]" module=grpc
time="2019-10-22T11:58:25.437359900+08:00" level=info msg="ClientConn wechselt Balancer zu \"pick_first\"" module=grpc
Zeit = "2019-10-22T11:58:25.437703900+08:00" Ebene = Info msg = "pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, VERBINDEN" Modul = grpc
Zeit = "2019-10-22T11:58:25.438698400+08:00" Ebene = Info msg = "pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, BEREIT" Modul = grpc
time="2019-10-22T11:58:25.559058900+08:00" level=info msg="[graphdriver] verwendet vorherigen Speichertreiber: overlay2"
time="2019-10-22T11:58:25.719182400+08:00" level=info msg="Die Migration des Graphen zur Inhaltsadressierbarkeit dauerte 0,00 Sekunden"
time="2019-10-22T11:58:25.719593400+08:00" level=warning msg="Ihr Kernel unterstützt das Cgroup-Speicherlimit nicht"
time="2019-10-22T11:58:25.719660300+08:00" level=warning msg="CPU-Cgroup in Mounts nicht gefunden"
time="2019-10-22T11:58:25.719697200+08:00" level=warning msg="Kann blkio cgroup in Mounts nicht finden"
time="2019-10-22T11:58:25.719732900+08:00" level=warning msg="Cpuset-Cgroup konnte in Mounts nicht gefunden werden"
time="2019-10-22T11:58:25.719888000+08:00" level=warning msg="Einhängepunkt für PIDs nicht gefunden"
time="2019-10-22T11:58:25.721991900+08:00" level=info msg="Integritätsprüfung nach ordnungsgemäßem Herunterfahren wird gestoppt" module=libcontainerd
time="2019-10-22T11:58:25.722045300+08:00" level=info msg="Ereignisstrom nach ordnungsgemäßem Herunterfahren wird gestoppt" error="Kontext abgebrochen" module=libcontainerd namespace=plugins.moby
Zeit = "2019-10-22T11:58:25.723869300+08:00" Ebene = Info msg = "pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, TRANSIENT_FAILURE" Modul = grpc
Zeit = "2019-10-22T11:58:25.724042800+08:00" Ebene = Info msg = "pickfirstBalancer: HandleSubConnStateChange: 0xc420769030, VERBINDUNG" Modul = grpc
Fehler beim Starten des Daemons: Geräte-Cgroup ist nicht gemountet

Vorläufiges Fazit: Der WIN10-Kernel kann die cgroup- und aufs-Komponenten von Linux nicht vollständig simulieren

Erklärung der offiziellen Website [Lösung]

[Cross Post] WSL-Interoperabilität mit Docker

https://nickjanetakis.com/blog/docker-für-windows-und-wsl-so-einrichten, dass es einwandfrei funktioniert

apt installiere Screenfetch
Bildschirmabruf

Skript: https://files.cnblogs.com/files/rgqancy/WSL.js, herunterladen und als txt speichern

Einrichten eines Relays

Nachdem Go installiert ist, können wir Relay erstellen. Ersetzen Sie in den folgenden Befehlen unbedingt Ihren Windows-Benutzernamen:

Gehen Sie zu get -d github.com/jstarks/npiperelay
GOOS=windows go build -o /mnt/c/Benutzer/Administrator/go/bin/npiperelay.exe github.com/jstarks/npiperelay

Wir haben das Relay jetzt für Windows erstellt, möchten aber, dass es innerhalb von WSL aufrufbar ist. Dazu erstellen wir einen symbolischen Link. Ersetzen Sie unbedingt: durch Ihren Windows-Benutzernamen:

sudo ln -s /mnt/c/Benutzer/Administrator/go/bin/npiperelay.exe /usr/local/bin/npiperelay.exe

Wir werden Socat verwenden, um die Weiterleitung zu ermöglichen. Installieren Sie socat, ein Tool, das den Datenfluss in beide Richtungen zwischen zwei Punkten ermöglicht (mehr dazu später). Schnapp dir dieses Paket:

sudo apt installiere socat

Letzter Schritt

Nachdem Socat installiert und die ausführbare Datei erstellt wurde, müssen wir nur noch ein paar Dinge zusammenfügen. Wir werden ein Shell-Skript erstellen, um unsere Funktionalität zu aktivieren. Wir werden dies im Home-Verzeichnis unseres Benutzers platzieren. Gehen Sie hierzu wie folgt vor:

#erstelle die Datei
berühren Sie ~/docker-relay
#Ausführungsberechtigungen hinzufügen
chmod +x ~/docker-relay

Öffnen Sie die von uns erstellte Datei mit Ihrem bevorzugten Texteditor (z. B. vim). Fügen Sie dies in die Datei Docker-Relay ein:

#!/bin/sh
exec socat UNIX-LISTEN:/var/run/docker.sock,fork,group=docker,umask=007 EXEC:"npiperelay.exe -ep -s //./pipe/docker_engine",nofork

Speichern Sie die Datei und schließen Sie sie. Das Docker-Relay-Skript konfiguriert die Docker-Pipeline, um der Docker-Gruppe den Zugriff zu ermöglichen. Um als normaler Benutzer zu laufen (ohne „sudo“ an jeden Docker-Befehl anhängen zu müssen), fügen Sie Ihren WSL-Benutzer zur Docker-Gruppe hinzu. Unter Ubuntu:

sudo adduser <Ihr WSL-Benutzer> docker

Lass es uns testen!

Öffnen Sie eine neue WSL-Shell, um sicherzustellen, dass Ihre Gruppenmitgliedschaft zurückgesetzt wird. Starten Sie das Relay im Hintergrund:

sudo ~/docker-relay &

Führen Sie jetzt den Docker-Befehl aus, um das Ganze zu testen. Sie sollten dieselbe Ausgabe erhalten, als hätten Sie den Befehl unter Windows ausgeführt (beachten Sie, dass Sie dem Befehl nicht das Präfix „sudo“ voranstellen müssen!).

Beachten

So starten Sie Docker für Windows im Voraus


Bildbeschreibung hier einfügen

Schema

Es gibt ein grundlegendes Problem dabei, den unter WSL laufenden Docker-Client dazu zu bringen, mit Docker für Windows zu kommunizieren: Der WSL-Client versteht IPC über Unix-Sockets, während Docker für Windows IPC über benannte Pipes versteht. Hier kommen socat und npiperelay.exe ins Spiel – sie fungieren als Vermittler zwischen diesen beiden disjunkten IPC-Formen. Socat versteht die Kommunikation über Unix-Sockets, npiperelay versteht die Kommunikation über benannte Pipes. Sowohl socat als auch npiperelay können über stdio kommunizieren und daher miteinander kommunizieren.


Bildbeschreibung hier einfügen

Zusammenfassen

Oben finden Sie das vom Herausgeber vorgestellte Tutorial zur Installation von Docker im Win10-Subsystem Ubuntu (WSL). Ich hoffe, es ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • So erstellen Sie eine TAR-Datei von WSL über Docker
  • Detaillierter Prozess der Bereitstellung von Docker für WSL2 in IDEA
  • Bei der Installation von Docker Desktop wird eine Fehlermeldung angezeigt: Die WSL 2-Installation ist unvollständig (Beheben Sie die Fehlermeldung).
  • So installieren Sie WSL2 Ubuntu20.04 unter Windows 10 und richten die Docker-Umgebung ein
  • Informationen zu WSL-Konfigurations- und Änderungsproblemen in Docker

<<:  Miniprogramm zur Implementierung einer kreisförmigen Text-Scrolling-Animation

>>:  Das WeChat-Applet realisiert die Chatroom-Funktion

Artikel empfehlen

Detaillierte Analyse der MySQL Master-Slave-Replikation

Vorwort: In MySQL sollte die Master-Slave-Archite...

Zusammenfassung der mathematischen Symbole in Unicode

In der Mathematik, Physik und einigen wissenschaf...

Anwendungsverschachtelung von HTML-ul-ungeordneten Tabellen

Anwendungsschachtelung ungeordneter Listen Code ko...

Tipps zur HTML-Formatierung und langen Dateien für das Webdesign

<br />Verwandte Artikel: 9 praktische Vorsch...

Details zur Verwendung von Bimface in Vue

Inhaltsverzeichnis 1. Installieren Sie das Vue-Ge...

So installieren Sie Docker und Portainer in Kali

Mit dem Aufkommen von Docker haben sich viele Die...

Beispiel für die Implementierung des Lastausgleichs mit Nginx+SpringBoot

Einführung in den Lastenausgleich Bevor wir die L...

Implementierungsbeispiel für die Message Board-Funktion von Node.js+Express

Inhaltsverzeichnis Nachrichtenbrett Erforderliche...