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.
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.
** 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.
** Installieren Sie den Docker-Desktop für Windows ** Installieren Sie Dokcer Desktop für Windows auf einem Windows-Computer
** Docker installieren, Docker-Compose ** Installieren Sie die neuesten Versionen von Docker und Docker-Compose auf WSL2 Ubuntu. Referenz: https://qiita.com/tettsu__/items/85c96850d187e4386c24
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.
Wir stellen den Docker-Daemon auf WSL2 für den Docker-Desktop für Windows zur Verfügung.
Auf dem Einstellungsbildschirm> Allgemein,✔ Verwenden Sie die WSL2-basierte Engine
✔ 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)
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] **
/ mnt / c
auf das Windows-Verzeichnis zugreifen.
Erstellen Sie dieses Mal ein Projekt im Windows-Verzeichnis und ** erstellen Sie das Projekt direkt im Ubuntu-Verzeichnis, anstatt vom Ubuntu-Terminal aus darauf zu verweisen. ** **.
(Wenn Docker in einem Projekt im Windows-Verzeichnis gestartet wird, dauert der Zugriff auf die Festplatte enorm lange, und vom Start von Docker bis zur ersten Bildschirmanzeige dauert es ungefähr 5 Minuten. Ich bin hier gestolpert.)Ö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.
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 **
/ mnt / c
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 **
Error
Aws::S3::Errors::RequestTimeTooSkewed: The difference between the request time and the current time is too large.
** Vorkommensverfahren **
docker-compose up
** 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
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
docker-compose.yml
services:
web:
privileged: true
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 **
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 **
docker-compose up
** Ursache ** Die Ursache, die ich verstehe, ist
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
--Opt 1 [WSL2]: Wenn der Docker des Projekts unter dem Ubuntu-Verzeichnis mit WSL2 gestartet wird, wird diesmal eingeführt.
/mnt/c
project]:
Wie ich oben ein wenig vorgestellt habe, wenn Sie den Docker des Projekts unter dem Windows-Verzeichnis mit WSL2 starten--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/c project] |
Opt 3[Vagrant] |
---|---|---|
15 s | 5 min | 3 min |
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.
Recommended Posts