Fermer

octobre 22, 2019

Comment installer Docker sur Windows 10 Home –


Si vous avez déjà essayé d’installer Docker pour Windows vous vous êtes probablement rendu compte que le programme d’installation ne fonctionnait pas sous Windows 10 Home. Seuls Windows Pro, Enterprise ou Education prennent en charge Docker. La mise à niveau de votre licence Windows est coûteuse et inutile, car vous pouvez toujours exécuter des conteneurs Linux sur Windows sans vous fier à la technologie Hyper-V une condition requise pour Docker pour Windows.

Si vous prévoyez d’exécuter Conteneurs Windows vous aurez besoin d'une version et d'une version spécifiques de Windows Server. Pour plus de détails, consultez la matrice de compatibilité des versions de conteneur Windows

dans 99,999% des cas, vous n’avez besoin que d’un conteneur Linux, car il prend en charge les logiciels conçus à partir de technologies open source et .NET. En outre, les conteneurs Linux peuvent fonctionner sur toutes les distributions et sur les architectures de processeurs populaires, y compris x86_64 ARM et IBM .

Dans ce tutoriel, Je vais vous montrer comment configurer rapidement une machine virtuelle Linux sur Windows Home exécutant Docker Engine à l'aide de Docker Machine . Voici une liste des logiciels dont vous aurez besoin pour créer et exécuter les conteneurs Docker:

  • Docker Machine : un outil CLI permettant d'installer Docker Engine sur des hôtes virtuels
  • Docker Engine : fonctionne au-dessus de Linux Noyau; utilisé pour la construction et l'exécution de conteneurs
  • Docker Client : un outil CLI permettant d'émettre des commandes à Docker Engine via l'API REST
  • Docker Compose : un outil permettant de définir et d'exécuter des applications multi-conteneurs

I 'montrerons comment effectuer l'installation dans les environnements suivants:

  1. Sous Windows utilisant Git Bash
  2. Sur un sous-système Windows pour Linux 2 (sous Ubuntu 18.04)

Permettez-moi d'abord d'expliquer comment le logiciel Docker l'installation fonctionnera sous Windows.

Comment ça marche

Comme vous le savez probablement, Docker a besoin d'un noyau Linux pour exécuter les conteneurs Linux. Pour que cela fonctionne sous Windows, vous devez configurer une machine virtuelle Linux pour qu'elle puisse s'exécuter en tant qu'invité dans Windows 10 Home.

 docker windows home

La configuration de la machine virtuelle Linux peut être effectuée. manuellement. Le moyen le plus simple consiste à utiliser Docker Machine pour effectuer ce travail pour vous en exécutant une seule commande. Cette machine virtuelle Linux Docker peut être exécutée sur votre système local ou sur un serveur distant. Le client Docker utilisera SSH pour communiquer avec Docker Engine. Chaque fois que vous créez et exécutez des images, le processus réel se déroule dans la machine virtuelle, pas sur votre hôte (Windows).

Passons à la section suivante pour configurer l'environnement nécessaire à l'installation de Docker.

Configuration initiale [19659014] Les applications suivantes peuvent être installées ou non sur votre système. Je suppose que vous ne le faites pas. Si vous le faites, assurez-vous de mettre à niveau vers les dernières versions. Je suppose également que vous utilisez la dernière version stable de Windows. Au moment de la rédaction de ce document, j'utilise Windows 10 Home version 1903. Commençons par installer ce qui suit:

  1. Installez Git Bash pour Windows . Ce sera notre terminal principal pour l'exécution des commandes Docker.

  2. Installez Chocolatey un gestionnaire de paquets pour Windows. Cela facilitera le travail d'installation du reste des programmes.

  3. Installez VirtualBox et son extension. Si vous avez fini d’installer Chocolatey, vous pouvez simplement exécuter cette commande dans un terminal PowerShell surélevé:

     C:  choco install virtualbox
    
  4. Si vous souhaitez essayer d’exécuter Docker dans l’environnement WSL2, vous devez d’abord configurer WSL2. Vous pouvez suivre ce tutoriel pour des instructions pas à pas.

Configuration de Docker Engine

L'installation de Docker Engine est assez simple. Nous devons d’abord installer Docker Machine.

  1. Installez Docker Machine en suivant les instructions de cette page . Vous pouvez également exécuter cette commande dans un terminal PowerShell surélevé:

     C:  choco install docker-machine
    
  2. À l'aide du terminal Git Bash, utilisez Docker Machine pour installer Docker Engine. Cela téléchargera une image Linux contenant le moteur Docker et l’exécutera en tant que machine virtuelle utilisant VirtualBox. Exécutez simplement la commande suivante:

     $ docker-machine create --driver virtualbox default
    
  3. Ensuite, nous devons configurer les ports exposés lors de l'exécution de conteneurs Docker. Cela nous permettra d'accéder à nos applications via localhost <:port>. N'hésitez pas à en ajouter autant que vous le souhaitez. Pour ce faire, vous devez lancer Oracle VM VirtualBox à partir du menu Démarrer. Sélectionnez par défaut VM dans le menu latéral. Cliquez ensuite sur Paramètres > Réseau > Adaptateur 1 > Port Forwarding . Vous devriez trouver le port de transfert ssh déjà configuré pour vous. Vous pouvez en ajouter davantage comme ceci:

     docker vm ports

  4. Nous devons ensuite permettre à Docker de monter des volumes situés sur votre disque dur. Par défaut, vous ne pouvez monter que depuis le répertoire C: // Users / . Pour ajouter un chemin différent, accédez simplement à l'interface graphique Oracle VM VirtualBox . Sélectionnez par défaut VM et accédez à Paramètres > Dossiers partagés . Ajoutez-en un en cliquant sur le symbole plus. Entrez les champs comme ça. Si une option appelée Permanent est activée, activez-la.

     docker vm volumes

  5. Pour éliminer l'erreur de configuration non valide illustrée dans la capture d'écran ci-dessus, augmentez simplement la mémoire vidéo. sous l'onglet Affichage dans les paramètres. La mémoire vidéo n’est pas importante dans ce cas, car nous allons exécuter la VM en mode sans tête.

  6. Pour démarrer la VM Linux, exécutez simplement cette commande dans Git Bash. La machine virtuelle Linux sera lancée. Donnez-lui un peu de temps pour que le processus de démarrage se termine. Cela ne devrait pas prendre plus d’une minute. Vous devrez le faire à chaque démarrage de votre système d'exploitation hôte:

     $ docker-machine start vbox
    
  7. Ensuite, nous devons configurer nos variables d'environnement Docker. Cela permet au client Docker et à Docker Compose de communiquer avec le moteur Docker s'exécutant sur la machine virtuelle Linux, par défaut . Vous pouvez le faire en exécutant les commandes dans Git Bash:

     # Imprimer les paramètres d'instance de la machine de base
    $ docker-machine env default
    
    # Définir les variables d'environnement à l'aide de la commande 'export' de Linux
    $ eval $ (docker-machine env default --shell linux)
    

    Vous devez définir les variables d’environnement chaque fois que vous démarrez un nouveau terminal Git Bash. Si vous souhaitez éviter cela, vous pouvez copier la sortie eval et la sauvegarder dans votre fichier .bashrc . Il devrait ressembler à ceci:

     export DOCKER_TLS_VERIFY = "1"
    export DOCKER_HOST = "tcp: //192.168.99.101: 2376"
    export DOCKER_CERT_PATH = "C:  Utilisateurs  Michael Wanyoike  .docker  machine  machines  default"
    export DOCKER_MACHINE_NAME = "default"
    export COMPOSE_CONVERT_WINDOWS_PATHS = "true"
    

    IMPORTANT : pour le DOCKER_CERT_PATH vous devez modifier le chemin de fichier Linux en un format de chemin Windows. Notez également qu’il est possible que l’adresse IP attribuée soit différente de celle que vous avez sauvegardée à chaque démarrage de la machine virtuelle par défaut .

Dans la section suivante, nous installerons Docker Client et Docker Compose.

Pour cette section, vous devrez installer les outils suivants à l’aide de PowerShell en mode administrateur. Ces outils sont intégrés au programme d’installation de Docker pour Windows. Le programme d’installation refusant de fonctionner sous Windows 10 Home, nous installerons ces programmes individuellement à l’aide de Chocolatey:

 C:  choco install docker-cli
C:  choco installe docker-compose

Une fois le processus d'installation terminé, vous pouvez revenir au terminal Git Bash. Vous pouvez continuer à utiliser PowerShell, mais je préfère la syntaxe Linux pour exécuter des commandes. Exécutons les commandes suivantes pour nous assurer que Docker est en cours d’exécution:

 # Start Docker VM
$ docker-machine start default

# Confirmer que la machine virtuelle Docker est en cours d'exécution
$ docker-machine ls

# Configurer Docker Envrionment pour utiliser Docker Vm
$ eval $ (docker-machine env default --shell linux)

# Confirmer que Docker est connecté. Devrait-il produire les spécifications de la VM Docker?
$ docker info

# Exécuter l’image docker hello-world. Devrait produire "Hello from Docker"
$ docker run hello-world

Si toutes les commandes ci-dessus s’exécutent avec succès, cela signifie que vous avez correctement installé Docker. Si vous voulez essayer un exemple plus ambitieux, j’ai une petite application Node.js que j’ai configurée pour être exécutée sur des conteneurs Docker. Tout d’abord, vous devez installer GNU Make à l’aide de PowerShell avec des privilèges d’administrateur:

 C:  choco install make

Ensuite, exécutez les commandes suivantes. L'exécution de cet exemple Node.js garantira que vous n'avez aucun problème avec les ports exposés et les volumes de montage sur le système de fichiers Windows. Tout d’abord, accédez à un dossier que vous avez déjà monté dans les paramètres de VirtualBox. Ensuite, exécutez les commandes suivantes:

 $ git clone git@github.com: brandiqa / docker-node.git

$ cd docker-node / website

$ make

Lorsque vous frappez la dernière commande, vous devriez vous attendre à une sortie similaire:

 docker volume create nodemodules
nodemodules
docker-compose -f docker-compose.builder.yml lancer --rm installer
npm WARN facultatif DÉPENDANCE OPTIONNELLE DE SKIPPING: fsevents@1.2.9 (node_modules / fsevents):
npm WARN notsup DEPENDANCE OPTIONNELLE DE SKIPPING: Plateforme non supportée pour fsevents@1.2.9: wanted {"os": "darwin", "arch": "tout"} (actuel: {"os": "linux", "arch": "x64"})

vérifié 9731 paquets en 21.405s

docker composer
Démarrer website_dev_1 ... terminé
Attachement à website_dev_1
dev_1 |
dev_1 | > docker-node@1.0.0 démarrer / usr / src / app
dev_1 | > colis src / index.html --hmr-port 1235
dev_1 |
dev_1 | Serveur s'exécutant à http: // localhost: 1234

L'obtention de la sortie ci-dessus signifie que le montage du volume a eu lieu avec succès. Ouvrez localhost: 1234 pour confirmer que le site Web est accessible. Cela confirmera que vous avez correctement configuré les ports. Vous pouvez modifier le code source, par exemple modifier le titre h1 dans App.jsx . Dès que vous enregistrez le fichier, la page du navigateur devrait s'actualiser automatiquement. Cela signifie que le rechargement de module à chaud fonctionne à partir d'un conteneur Docker.

J'aimerais attirer votre attention sur le fichier utilisé par docker-compose.yml . Pour le rechargement de module à chaud pour fonctionner à partir d'un conteneur Docker dans Windows nécessite les éléments suivants:

  1. Lors de l'utilisation de parcelle, spécifiez le port HMR dans votre script de démarrage package.json :

    parcelle src / index.html –hmr-port 1235

  2. Dans les règles de transfert de port de la machine virtuelle, assurez-vous ces ports sont exposés au système hôte:

  3. inotify ne fonctionne pas sur les systèmes de fichiers vboxsf . Par conséquent, les modifications de fichier ne peuvent pas être détectées. La solution de contournement consiste à définir une interrogation pour Chokidar via des variables d'environnement dans dans docker-compose.yml . Voici le fichier complet afin que vous puissiez voir comment il est défini:

     version: '3'
    prestations de service:
      dev:
        image: noeud: 10-jessie-slim
        volumes:
          - nodemodules: / usr / src / app / node_modules
          - ./:/usr/src/app
        rép_travail: / usr / src / app
        commande: npm start
        ports:
          - 1234: 1234
          - 1235: 1235
        environnement:
        - CHOKIDAR_USEPOLLING = 1
    volumes:
      nodemodules:
        externe: vrai
     

Maintenant que l'implémentation de Docker sur Windows 10 fonctionne parfaitement, configurons-la sur WSL2 pour les personnes intéressées.

Sous-système Windows pour Linux 2

L'installation de Docker sur WSL2 n'est pas aussi simple. il semble. Malheureusement, la dernière version de Docker Engine ne peut pas fonctionner sur WSL2. Cependant, il existe une version plus ancienne, docker-ce = 17.09.0 ~ ce-0 ~ ubuntu capable de fonctionner correctement dans WSL2. Je ne couvrirai pas ça ici. Au lieu de cela, je vais vous montrer comment accéder à Docker Engine qui s'exécute dans la machine virtuelle que nous avons précédemment configurée à partir d'un terminal WSL.

En supposant que vous utilisez WSL2 Ubuntu Terminal, exécutez la procédure suivante:

  1. Installez Docker en utilisant les instructions officielles:

     # Mettez à jour la liste des paquets apt.
    sudo apt-get update -y
    
    # Installer les dépendances du paquet de Docker.
    sudo apt-get install -y 
        apt-transport-https 
        ca-certificats 
        curl 
        logiciel-propriétés-commun
    
    # Téléchargez et ajoutez la clé publique PGP officielle de Docker.
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    # Vérifiez l'empreinte digitale.
    sudo apt-key empreinte 0EBFCD88
    
    # Ajoutez le référentiel amont de Docker du canal `stable`.
    #
    # Si vous voulez vivre sur le bord, vous pouvez changer "stable" en "test" ou
    # "tous les soirs". Je recommande fortement de coller avec stable!
    sudo add-apt-repository 
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
    $ (lsb_release -cs) 
    stable"
    
    # Met à jour la liste des paquets apt (pour le nouveau référentiel apt).
    sudo apt-get update -y
    
    # Installez la dernière version de Docker CE.
    sudo apt-get install -y docker-ce
    
    # Permettez à votre utilisateur d'accéder à la CLI de Docker sans avoir besoin d'un accès root.
    sudo usermod -aG docker $ USER
    
  2. Installez Docker Compose en utilisant ce guide officiel . Une alternative consiste à utiliser PIP, qui installera simplement la dernière version stable:

     # Install Python and PIP.
    sudo apt-get install -y python python-pip
    
    # Installez Docker Compose dans le répertoire de base de votre utilisateur.
    pip install --user docker-compose
    
  3. Corrigez le problème de montage de Docker dans le terminal WSL en insérant ce contenu dans /etc/wsl.conf . Créez le fichier s’il n’existe pas:

     [automount]
    root = /
    options = "metdata"
    

    Vous devez redémarrer votre ordinateur pour que ce paramètre prenne effet.

  4. Si la machine virtuelle Linux Docker est en cours d’exécution, vous devez y connecter les outils Docker de l’environnement WSL. Si vous pouvez accéder à docker-machine à partir du terminal Ubuntu, exécutez la commande eval . Sinon, vous pouvez insérer la variable Docker suivante dans votre fichier .bashrc . Voici un exemple:

     export DOCKER_HOST = "tcp: //192.168.99.101: 2376"
    export DOCKER_CERT_PATH = "/ c / Utilisateurs / Michael Wanyoike / .docker / machine / machines / vbox"
    export DOCKER_MACHINE_NAME = "vbox"
    export COMPOSE_CONVERT_WINDOWS_PATHS = "true"
    

    Vous devez redémarrer votre terminal ou exécuter source ~ / .bashrc pour que les paramètres prennent effet. L'exécution des commandes Docker devrait fonctionner correctement dans WSL sans accroc.

Passage à Linux

Nous arrivons maintenant à la fin de cet article. La procédure de configuration de Docker dans Windows 10 est un processus un peu long. Si vous envisagez de reformater votre ordinateur, vous devrez suivre le même processus. C’est pire si votre travail consiste à installer Docker sur plusieurs ordinateurs exécutant Windows 10 Home.

Une solution plus simple consiste à passer à Linux pour le développement. Vous pouvez créer une partition et configurer le double démarrage. Vous pouvez également utiliser VirtualBox pour installer et exécuter un Distro Linux complet sous Windows. Découvrez quelle distribution populaire vous voulez essayer. J'utilise Linux Lite car il est léger et basé sur Ubuntu. Avec VirtualBox, vous pouvez essayer autant de distributions que vous le souhaitez.

 Linux Lite VM

Si vous utilisez une distribution basée sur Ubuntu, vous pouvez installer Docker facilement avec ces commandes: 19659030] # Installez https://snapcraft.io/ gestionnaire de paquets
sudo apt install snapd

# Installer Docker Engine, Docker Client et Docker Compose
sudo snap install docker

# Exécuter les commandes Docker sans sudo
sudo usermod -aG docker $ USER

Vous devez vous déconnecter, puis vous connecter pour que la dernière commande soit effective. Après cela, vous pouvez exécuter n'importe quelle commande Docker sans problème. Vous n'avez pas à vous soucier des problèmes de montage ou de ports. Docker Engine s'exécute en tant que service sous Linux, qui démarre automatiquement par défaut. Pas besoin de provisionner une machine virtuelle Docker. Tout fonctionne comme prévu sans passer par un piratage.

Résumé

J'espère que vous avez navigué sans heurts pour installer et exécuter Docker sous Windows 10 Home. Je pense que cette technique devrait fonctionner sur des versions plus anciennes, telles que Windows 7. Si vous rencontrez un problème, suivez simplement les instructions pour voir si vous avez oublié quelque chose. Notez cependant que je n'ai pas couvert toutes les fonctionnalités de Docker. Vous pouvez rencontrer un bogue ou une fonctionnalité non prise en charge qui nécessite une solution de contournement ou ne pas avoir de solution du tout. Si tel est le cas, je vous recommanderais de passer sous Linux si vous souhaitez une expérience de développement plus fluide avec Docker.




Source link