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

Hinweise zur Verwendung von $refs in Vue-Instanzen

Während des Entwicklungsprozesses verwenden wir h...

Detaillierte Erklärung zur Verwendung der Vue-Komponente zur Kennzeichensuche

Eine einfache Nummernschild-Eingabekomponente (vu...

Implementieren der Prioritätswarteschlange in JavaScript

Inhaltsverzeichnis 1. Einführung in die Priorität...

Installieren und konfigurieren Sie MySQL 5.7 unter CentOS 7

Dieser Artikel testet die Umgebung: CentOS 7 64-B...

JavaScript zum Erzielen eines ausgewogenen digitalen Scroll-Effekts

Inhaltsverzeichnis 1. Hintergrund zur Umsetzung 2...

Vue implementiert Tab-Tab-Umschaltung

In diesem Artikelbeispiel wird der spezifische Co...

Implementierung eines statischen Website-Layouts im Docker-Container

Serverplatzierung Es wird empfohlen, Cloud-Server...

JavaScript zum Erzielen eines Vollbild-Seiten-Scrolleffekts

Nachdem ich mit der Lektüre von JavaScript DOM fe...

4 Prinzipien für sauberes und schönes Webdesign

In diesem Artikel werden diese 4 Prinzipien im Hi...

Analyse der Verschachtelungsregeln von XHTML-Tags

In der XHTML-Sprache wissen wir alle, dass das ul...

Nginx leitet dynamisch an Upstream weiter, entsprechend dem Pfad in der URL

In Nginx gibt es einige erweiterte Szenarien, in ...