Verwenden von Docker mit Windows10 Home WSL2

Autorenumgebung

Einführung

In Windows 10 Pro ist Hyper-V standardmäßig installiert, sodass Sie mit Docker Desktop für Windows problemlos eine Umgebung erstellen können. In Windows 10 Home ohne Hyper-V ist das Erstellen eines Dockers jedoch etwas mühsam.

Daher gibt es verschiedene Möglichkeiten, Docker unter Windows 10 Home zu verwenden.

  1. Starten Sie Docker mit WSL (Windows Subsystem für Linux).
  2. Starten Sie Docker auf VB mit Vagrant

Dieses Mal werden wir die erste Methode mit WSL einrichten, die eine schnelle anfängliche Ausführungsgeschwindigkeit und wenige Schritte zum Erstellen einer Entwicklungsumgebung aufweist.

Starten Sie Docker mit WSL

Vorbereitungen

  1. ** Installieren Sie WSL2. ** **. Installieren Sie WSL2, damit Sie von Windows aus auf Betriebssysteme wie Ubuntu zugreifen können. Das Verfahren zum Installieren von WSL2 wird hier weggelassen, aber ** WSL2 ** wird anstelle von WSL1 installiert.

  2. ** Installieren Sie den Docker-Desktop für Windows ** Installieren Sie Dokcer Desktop für Windows auf einem Windows-Computer

  3. ** Docker installieren, Docker-Compose ** Installieren Sie die neuesten Versionen von Docker und Docker-Compose auf WSL2 Ubuntu. Referenz: https://qiita.com/tettsu__/items/85c96850d187e4386c24

Verfahren

1. WSL2-Einstellungen

Aus irgendeinem Grund kann in Docker Desktop für Windows mit WSL2 die Zuweisung von CPU usw. nicht über den Einstellungsbildschirm gesteuert werden Ändern Sie die CPU- / Speicher- / SWAP- / Festplattengröße vom Terminal aus.

2. Docker Desktop für Windows-Einstellungen

Wir stellen den Docker-Daemon auf WSL2 für den Docker-Desktop für Windows zur Verfügung.

image.png (100.4 kB) Auf dem Einstellungsbildschirm> Allgemein,

Verwenden Sie die WSL2-basierte Engine

image.png (55.7 kB) Gehen Sie zu Einstellungen> Ressourcen> WSL-INTEGRATION

Aktivierung mit meiner Standard-WSL-Distribution aktivieren.

Wenn Ubuntu auf WSL2 installiert und korrekt eingestellt ist, wird eine Anzeige wie "Ubuntu" angezeigt (siehe Abbildung oben). Schalten Sie sie daher ein.

** [Hinweis] ** Wenn Sie die obige Spalte ✔ nicht überprüfen können,

--tcp: // localhost: 2375 kann nicht gesetzt werden. (Vergessen, den localhost-Pfad nach bashrc zu exportieren)

Solche Ursachen sind möglich. (Bitte googeln Sie für Details)

3. Erstellen Sie ein Projekt im Ubuntu-Terminal auf WSL2.

Erstellen Sie ein Projekt im Ubuntu-Terminal (im Folgenden als Ubuntu-Terminal bezeichnet) auf WSL2.

ubuntu:~ $ mkdir work
ubuntu:~ $ cd work
ubuntu:~/work $ git clone [email protected]/~

** [Zu beachtende Punkte] **

3. Docker-Compose

Öffnen Sie das Ubuntu-Terminal und starten Sie den Docker-Container.

$ docker-compose up -d

Damit ist es in Ordnung, wenn Sie den Container starten, ohne einen Fehler auszulösen. In meiner Umgebung war es nicht so einfach. Hier sind die Fehler, mit denen ich konfrontiert war, und ihre Lösungen.

Fehler in der Umgebungskonstruktion und deren Lösungen

Fall 1: sh Ich kann die Datei nicht finden!

Error

ERROR: for rails_1  Cannot start service rails: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"bin/start_dev_server.sh\": stat bin/start_dev_server.sh: no such file or directory": unknown

** Vorkommensverfahren **

  1. Erstellen Sie ein Projekt unter / mnt / c
  2. docker-compose up

** Ursache ** In diesem Fall ist die Wurzel des absoluten Pfades von WSL2 "/ mnt / c". Dies lag daran, dass der Stamm des absoluten Pfads von / C in der VM von Docker für Windows angewendet wurde.

Lösung Erstellen Sie ein Projekt im Windows-Verzeichnis, beenden Sie die Referenzierung und erstellen Sie ein Projekt im Ubuntu-Verzeichnis.

** Referenzlink **

Fall 2: Ich kann nicht auf AWS S3 zugreifen!

Error

Aws::S3::Errors::RequestTimeTooSkewed: The difference between the request time and the current time is too large.

** Vorkommensverfahren **

  1. docker-compose up
  2. Fehler beim Abrufen maskierter Daten aus AWS S3

** Ursache ** Die Ursache war, dass die Zeit, in der der Docker-Container auf WSL2 (Ubuntu-Terminal) ausgeführt wurde, erheblich unterschiedlich war.

Windows-Hostseite (richtig)

$ data 
Sun Aug 30 18:16:29 JST 2020

Ubuntu-Terminalseite

$ data
Sun Aug 28 11:16:29 JST 2020

Lösung

  1. Zunächst tritt der Fehler Aws :: S3 :: Errors :: RequestTimeTooSkewed auch dann auf, wenn die Zeitzone unterschiedlich ist. Setzen Sie die Zeitzone daher in docker-compose.yml auf JST.

docker-compose.yml


services:
  web: 
   environment:
     TZ: Asia/Tokyo
  1. Als nächstes Wenn Sie den Datenbefehl in der Shell des Containers verwenden, müssen Sie zunächst die Berechtigungen festlegen, damit der Vorgang nicht zulässig ist.

docker-compose.yml


services:
  web:
   privileged: true
  1. Schließlich Verwenden Sie in der Shell des Containers den Befehl data, um das Datum zu ändern
$ data --set "2020-08-30 18:16:29" //Manuell auf die aktuelle Zeit einstellen

** Memo ** Außerdem scheint es, dass Sie die Zeit ändern können, indem Sie "hwclock -s" verwenden, aber Sie sterben mit dem folgenden Fehler.

$ hwclock -s
hwclock: Cannot access the Hardware Clock via any known method.

** Referenzlink **

Fall 3: Docker-Daemon ist nicht verbunden!

Error

$ docker-compose up
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

** Vorkommensverfahren **

  1. docker-compose up

** Ursache ** Die Ursache, die ich verstehe, ist

  1. Eine andere VM wird ausgeführt Die Plattform für virtuelle Maschinen, die bei Verwendung von Docker verwendet wird, das auf der Hyper-V-Plattform (die hier sehr ärgerlich ist) (die sich von <-Hyper-V unterscheidet) ausgeführt wird, und anderen virtuellen Maschinen wie Oracle Virual Box. Es scheint nicht gut zu sein, sie gleichzeitig zu verwenden, da dies zu Konflikten auf der Hyper-V-Plattform führt (?).
  1. WSL ist nicht aktiviert

Ich denke, es gibt noch viele andere Ursachen.

Lösung Aus Grund 1

Aus Grund 2

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Referenzlink: https://qiita.com/aki4000/items/c26e3076c8cec9677415

Andere

Zeitaufwand für die Anzeige des Startbildschirms (Spekulation)

--Opt 1 [WSL2]: Wenn der Docker des Projekts unter dem Ubuntu-Verzeichnis mit WSL2 gestartet wird, wird diesmal eingeführt.

--Opt 3 [Vagrant]: Wenn Docker mit Vagrant auf einer VM gestartet wird

** Zeit vom Zugriff auf localhost bis zur Anzeige der oberen Seite nach dem Start des Docker-Containers ⇓ **

Opt 1[WSL2] Opt 2[WSL2 in /mnt/cproject] Opt 3[Vagrant]
15 s 5 min 3 min

Ich möchte ein Projekt unter Ubuntu Dire mit einer IDE wie RubyMine bearbeiten

Bei Projekten unter Windows Dire können Sie normalerweise RubyMine- oder VS-Code öffnen und bearbeiten. Das Anzeigen des Ubuntu-Dire von einem Windows-Terminal aus ist etwas mühsam, und das Bearbeiten eines Projekts unter dem Ubuntu-Dire mithilfe der IDE ist etwas verwirrend.

Verfahren

  1. Installieren Sie Vcxsrv und setzen Sie es auf Yoshina
  2. Installieren Sie Rubymine vom Ubuntu-Terminal
  3. Starten Sie Xlaunch von Vcxsrv und starten Sie rubymine.sh.

Recommended Posts

Verwenden von Docker mit Windows10 Home WSL2
Probieren Sie Docker unter Windows 10 Home aus
Verwenden Sie Docker Compose unter Windows 10 Home
Windows Docker: Datenträgerdruck auf WSL-Datei
Verwenden von JupyterLab + Java mit WSL unter Windows 10
Bis Ubuntu 20 installiert ist und Docker unter Windows 10 Home und WSL2 ausgeführt wird
Bedienen Sie Docker Desktop für Windows mit Linux (WSL)
Installieren Sie Docker unter Windows 10 PRO
Führen Sie openvpn unter Docker aus (Windows)
Ich habe eine Ubuntu-Umgebung unter Windows 10 mit WSL2 erstellt.
Probieren Sie Redmine auf dem Mac Docker aus
Erstellen einer Haskell-Umgebung mit Docker + VS-Code unter Windows 10 Home
Führen Sie NordVPN im Docker (Windows) Ubuntu-Container aus
Einführung von Docker in die Windows 10 Home August 2020-Version
Eine Geschichte über die Bekämpfung der Ubuntu-Fehler 0x80370114 und 0x80000000, um den Docker-Desktop mit wsl2 in Windows 10 Home zu aktivieren
Freiheit auf Docker
Redmine auf Docker
Docker auf wsl2 sagt nicht mehr Ja oder Nein
Installationsanweisungen für Docker unter Ubuntu18.04 unter WSL2 und VSCode
Erstellen einer Doker-basierten Entwicklungsumgebung unter Windows 10 Home 2020 Version 1 Bis WSL2-basierte Docker-Konstruktion
Installieren Sie Ubuntu 20.04 in der virtuellen Box unter Windows 10 und erstellen Sie eine Entwicklungsumgebung mit Docker
Installieren Sie Corretto 8 unter Windows
Docker-Installation unter CentOS 6
Python-Memo auf Docker
Bereitstellen von Laravel mit Docker auf EC2 unter AWS ① (EC2-Instanz erstellen)
Explodiere Docker mit WSL2
Installieren Sie Docker auf Manjaro
Verwenden Sie JDBC unter Linux
Ich habe CentOS 8 unter Windows 10 mit VirtualBox und Vagrant installiert
Erstellen Sie eine Chisel-Entwicklungsumgebung mit Windows 10 + WSL2 + VScode + Docker
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Elastic IP Acquisition-Linking).
Bis Sie nginx unter CentOS mit Docker unter Mac OS starten
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Git Clone-Deployment, Migration).
Versuchen Sie Hello World mit einfachem Java im Docker-Container
Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Maßnahmen für Berechtigungen beim Erstellen von MySQL mit Docker auf WSL2
Installieren Sie Docker auf Raspberry Pi
WSL2 + VSCode + Docker-Entwicklungsumgebung
Installieren Sie Docker unter Ubuntu Server 20.04
Oracle Java 8 unter Docker Ubuntu
Erstellen Sie OpenJDK manuell unter Windows
Installieren Sie Java unter WSL Ubuntu 18.04
Docker Autostart-Einstellung mit wsl2
Ubuntu unter Windows Build-Geschwindigkeit
Erstellen einer Docker-Umgebung mit WSL
Gehostetes Apicurio Studio auf Docker
Installieren Sie Docker auf AWS EC2