Dans Windows 10 Professionnel, Hyper-V est installé par défaut, vous pouvez donc facilement créer un environnement à l'aide du bureau Docker pour Windows, mais dans Windows 10 Famille, qui n'a pas Hyper-V, la création d'un docker est un peu gênant.
Par conséquent, il existe plusieurs façons d'utiliser le docker sous Windows 10 Famille.
Cette fois, nous allons mettre en place la première méthode utilisant WSL, qui a une vitesse d'exécution initiale rapide et quelques étapes pour créer un environnement de développement.
** Installez WSL2. ** ** Installez WSL2 afin de pouvoir accéder à un système d'exploitation tel que ubuntu à partir du système d'exploitation Windows. La procédure d'installation de WSL2 est omise ici, mais ** WSL2 ** est installé à la place de WSL1.
** Installez le bureau Docker pour Windows ** Installez Dokcer desktop for Windows sur une machine Windows
** Installez docker, docker-compose ** Installez les dernières versions de docker et docker-compose sur WSL2 ubuntu. Référence: https://qiita.com/tettsu__/items/85c96850d187e4386c24
Pour une raison quelconque, dans le bureau Docker pour Windows utilisant WSL2, l'allocation du processeur, etc. ne peut pas être effectuée à partir de l'écran de configuration, donc Modifiez la taille du processeur / mémoire / SWAP / disque à partir du terminal.
Ce que nous faisons, c'est rendre le démon docker sur WSL2 disponible pour le bureau Docker pour Windows.
Sur l'écran des paramètres> Général,ʻUtiliser le moteur basé sur WSL2` ✔
Allez dans Paramètres> Ressources> INTÉGRATION WSLʻActiver l'intégration avec ma distribution WSL par défaut`.
Si ubuntu est installé sur WSL2 et configuré correctement, un affichage tel que "Ubuntu" apparaîtra comme indiqué dans l'image ci-dessus, alors activez-le.
** [Remarque] ** Si vous ne pouvez pas vérifier la colonne ✔ ci-dessus,
--tcp: // localhost: 2375 ne peut pas être défini. (Oublié d'exporter le chemin localhost vers bashrc)
De telles causes sont possibles. (Veuillez google pour plus de détails)
Créez un projet dans le terminal ubuntu (ci-après dénommé terminal ubuntu) sur WSL2.
ubuntu:~ $ mkdir work
ubuntu:~ $ cd work
ubuntu:~/work $ git clone [email protected]/~
** [Points à noter] **
/ mnt / c
.
Cette fois, créez un projet dans le répertoire Windows et ** créez le projet directement dans le répertoire sur ubuntu au lieu de le référencer depuis le terminal ubuntu. ** **
(Lorsque docker est lancé dans un projet sur le répertoire Windows, cela prend énormément de temps pour accéder au disque, et cela prend environ 5 minutes entre le lancement de docker et l'affichage de l'écran initial. Je suis tombé ici.)Ouvrez le terminal ubuntu et lancez le conteneur Docker.
$ docker-compose up -d
Avec cela, c'est ok si vous démarrez le conteneur sans lancer d'erreur, Ce n'était pas si facile dans mon environnement, alors voici les erreurs que j'ai rencontrées et leurs solutions.
Erreur
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
** Procédure d'événement **
/ mnt / c
docker-compose up
** Cause **
Dans ce cas, la racine du chemin absolu de WSL2 est / mnt / c
,
Cela était dû au fait que la racine du chemin absolu de / C
était appliquée dans la VM de Docker pour Windows.
Solution Créez un projet sous le répertoire Windows, arrêtez de le référencer et créez un projet sous le répertoire ubuntu.
** Lien de référence **
Erreur
Aws::S3::Errors::RequestTimeTooSkewed: The difference between the request time and the current time is too large.
** Procédure d'événement **
docker-compose up
** Cause ** La cause était que l'heure du conteneur Docker s'exécutant sur WSL2 (terminal ubuntu) était significativement différente.
Côté hôte Windows (correct)
$ data
Sun Aug 30 18:16:29 JST 2020
côté terminal ubuntu
$ data
Sun Aug 28 11:16:29 JST 2020
Solution
docker-compose.yml
services:
web:
environment:
TZ: Asia/Tokyo
docker-compose.yml
services:
web:
privileged: true
data
pour changer la date$ data --set "2020-08-30 18:16:29" //Réglé manuellement sur l'heure actuelle
** Note **
De plus, il semble que vous puissiez changer l'heure en utilisant hwclock -s
, mais vous mourrez avec l'erreur suivante.
$ hwclock -s
hwclock: Cannot access the Hardware Clock via any known method.
** Lien de référence **
Erreur
$ 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'.
** Procédure d'événement **
docker-compose up
** Cause ** La cause que je comprends est
Je pense qu'il existe également de nombreuses autres causes.
Solution Pour la cause 1
Pour la cause 2
--Ouvrez PowerShell et
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Lien de référence: https://qiita.com/aki4000/items/c26e3076c8cec9677415
--Opt 1 [WSL2]: Lorsque le docker du projet sous le répertoire ubuntu est lancé à l'aide de WSL2 introduit cette fois.
/mnt/c
project]:
Comme je l'ai présenté un peu plus haut, lorsque vous lancez le docker du projet sous le répertoire Windows en utilisant WSL2--Opt 3 [Vagrant]: lorsque le docker est lancé sur la VM en utilisant Vagrant
** Temps écoulé entre l'accès localhost et l'affichage de la première page après le lancement du conteneur Docker ⇓ **
Opt 1[WSL2] | Opt 2[WSL2 in /mnt/c project] |
Opt 3[Vagrant] |
---|---|---|
15 s | 5 min | 3 min |
Pour les projets sous Windows Dire, vous pouvez normalement ouvrir le code RubyMine ou VS et le modifier, Afficher l'ubuntu dire à partir d'un terminal Windows est un peu fastidieux, et éditer un projet sous l'ubuntu dire à l'aide de l'IDE est un peu déroutant.
Recommended Posts