Utilisation de Docker avec Windows10 Home WSL2

Environnement de l'auteur

introduction

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.

  1. Lancez le docker à l'aide de WSL (sous-système Windows pour Linux)
  2. Lancez docker sur VB en utilisant Vagrant

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.

Lancer le docker à l'aide de WSL

Préparation préalable

  1. ** 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.

  2. ** Installez le bureau Docker pour Windows ** Installez Dokcer desktop for Windows sur une machine Windows

  3. ** 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

procédure

1. Paramètres WSL2

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.

2. Docker Desktop pour les paramètres Windows

Ce que nous faisons, c'est rendre le démon docker sur WSL2 disponible pour le bureau Docker pour Windows.

image.png (100.4 kB) Sur l'écran des paramètres> Général,

ʻUtiliser le moteur basé sur WSL2` ✔

image.png (55.7 kB) 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)

3. Créez un projet dans le terminal ubuntu sur WSL2.

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] **

3. docker-composer

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.

Erreurs dans la construction de l'environnement et leurs solutions

cas 1: sh je ne trouve pas le fichier!

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 **

  1. Créez un projet sous / mnt / c
  2. 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 **

cas 2: je ne peux pas accéder à AWS S3!

Erreur

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

** Procédure d'événement **

  1. docker-compose up
  2. Erreur lors de la récupération des données masquées depuis AWS S3

** 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

  1. Tout d'abord, définissez le fuseau horaire sur JST dans docker-compose.yml, car l'erreur ʻAws :: S3 :: Errors :: RequestTimeTooSkewed` se produira même si le fuseau horaire est différent.

docker-compose.yml


services:
  web: 
   environment:
     TZ: Asia/Tokyo
  1. Ensuite, Tout d'abord, lors de l'utilisation de la commande data à l'intérieur du shell du conteneur, il est nécessaire de définir les autorisations afin que l'opération ne soit pas autorisée.

docker-compose.yml


services:
  web:
   privileged: true
  1. Enfin, Dans la coquille du conteneur, utilisez la commande 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 **

cas 3: docker-daemon n'est pas connecté!

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 **

  1. docker-compose up

** Cause ** La cause que je comprends est

  1. Une autre VM est en cours d'exécution La plate-forme de machine virtuelle utilisée lors de l'utilisation de docker, qui fonctionne sur la plate-forme Hyper-V (ce qui est très gênant ici) (qui est différente de <-Hyper-V), et d'autres machines virtuelles telles que Oracle Virual Box. Il semble que les utiliser en même temps ne soit pas bon car cela provoque des conflits dans la plate-forme Hyper-V (?).
  1. WSL n'est pas activé

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

Autre

Temps nécessaire pour afficher l'écran initial (spéculation)

--Opt 1 [WSL2]: Lorsque le docker du projet sous le répertoire ubuntu est lancé à l'aide de WSL2 introduit cette fois.

--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/cproject] Opt 3[Vagrant]
15 s 5 min 3 min

Je veux éditer le projet sous ubuntu dire avec un IDE tel que RubyMine

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.

procédure

  1. Installez Vcxsrv et réglez-le sur Yoshina
  2. Installez Rubymine à partir du terminal ubuntu
  3. Démarrez Xlaunch obtenu par Vcxsrv et démarrez rubymine.sh.

Recommended Posts

Utilisation de Docker avec Windows10 Home WSL2
Essayez Docker sur Windows 10 Famille
Utiliser Docker Compose sur Windows 10 Famille
Windows Docker: pression du disque sur le fichier WSL
Utilisation de JupyterLab + Java avec WSL sous Windows 10
Jusqu'à ce qu'Ubuntu 20 soit installé et que Docker fonctionne sur Windows 10 Home et WSL2
Utiliser Docker Desktop pour Windows avec Linux (WSL)
Installez Docker sur Windows 10 PRO
Exécutez openvpn sur Docker (Windows)
J'ai construit un environnement Ubuntu sur Windows 10 en utilisant WSL2.
Essayez Redmine sur le docker Mac
Création d'un environnement haskell avec Docker + VS Code sur Windows10 Home
Exécutez NordVPN dans le conteneur Ubuntu Docker (Windows)
Introduction de Docker dans la version Windows 10 Famille d'août 2020
Une histoire sur la lutte contre les erreurs Ubuntu 0x80370114 et 0x80000000 pour activer Docker Desktop avec WSL2 dans Windows10 Home
Liberty sur Docker
Redmine sur Docker
Docker sur WSL2 ne dit plus oui ou non
Docker sur Ubuntu18.04 sur WSL2 et instructions d'installation de VSCode
Créer un environnement de développement basé sur Doker sur Windows10 Famille 2020 ver.Partie 1 Jusqu'à la construction de Docker basé sur WSL2
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
Installez Corretto 8 sur Windows
Installation de Docker sur CentOS 6
mémo python sur docker
Déployer laravel à l'aide de docker sur EC2 sur AWS ① (Créer une instance EC2)
Exploser Docker avec WSL2
Installez Docker sur Manjaro
Utiliser JDBC sous Linux
J'ai installé CentOS 8 sur Windows 10 en utilisant VirtualBox et Vagrant
Créer un environnement de développement Chisel avec Windows10 + WSL2 + VScode + Docker
Création d'un hôte Docker sur AWS à l'aide de Docker Machine (mémorandum personnel)
Déployez laravel à l'aide de docker sur EC2 sur AWS ② (Elastic IP acquisition-binding)
Jusqu'à ce que vous démarriez nginx sur CentOS en utilisant Docker sur Mac OS
Déployer laravel à l'aide de docker sur EC2 sur AWS ④ (git clone-deploy, migration)
Essayez Hello World en utilisant Java brut sur le conteneur Docker
Script de configuration pour l'utilisation de docker dans un environnement proxy sur ubuntu 20.04.1
Mesures des autorisations lors de la construction de MySQL avec Docker sur WSL2
Installez Docker sur Raspberry Pi
Environnement de développement WSL2 + VSCode + Docker
Installez Docker sur Ubuntu Server 20.04
Oracle Java 8 sur Docker Ubuntu
Créer manuellement OpenJDK sous Windows
Installez Java sur WSL Ubuntu 18.04
Paramètre de démarrage automatique de Docker avec wsl2
Ubuntu sur la vitesse de construction de Windows
Créer un environnement Docker avec WSL
Hébergé Apicurio Studio sur Docker
Installer docker sur AWS EC2