Faire tourner Docker sous Windows peut s’avérer assez compliqué. Ce guide est là pour vous aider à installer docker sous Windows 32/64 bits avec Vagrant et à démarrer rapidement un environnement fonctionnel avec Docker, docker-compose et un certificat qui permet d’accéder au registre Docker.
Installer docker sous Windows 32/64 bits avec Vagrant : tout d’abord installez Git for Windows
Git for Windows apporte un jeu d’outils en ligne de commande, dont une émulation Bash qui se comporte comme la commande git sous systèmes Linux/Unix. Ce n’est pas strictement nécessaire pour l’installation mais cela peut apporter un certain confort.
https://git-for-windows.github.io/
Installez Cygwin
Cygwin est une collection d’utilitaires libres avec des fonctionnalités similaires aux utilitaires disponibles sur systèmes Linux/Unix. Nous avons besoin de Cygwin pour le support de l’utilitaire rsync sous Windows.
Installez ou mettez à jour Cygwin en prenant soin de sélectionner l’utilitaire rsync sous l’arborescence Net.
https://cygwin.com/install.html
Ajoutez le répertoire d’utilitaires Cygwin à la variable système Path de Windows :
C:\cygwin\bin
Ouvrez une invite de commande et vérifiez la disponibilité de rsync :
rsync --help
Installez VirtualBox et ses extensions
VirtualBox permet de faire tourner des machines virtuelles avec un système d’exploitation invité sur un système d’exploitation hôte. Vous aurez besoin de VirtualBox pour faire tourner un système invité 64 bits sur une machine Windows 32 bits (avec un processeur 32 bits qui supporte l’émulation).
Téléchargez et installez la dernière version de VirtualBox pour Windows, le pack d’extensions, et les additions client.
https://www.virtualbox.org/wiki/Downloads
Installez VirtualBox, et lorsque cela est fini, installez le lot d’extensions. ATTENTION, les extensions et additions client sont nécessaires au bon fonctionnement du partage de répertoires entre le système émulé et le système hôte puis redémarrez.
En cas de problèmes
Si vous expérimentez des problèmes entre Vagrant et VirtualBox pour la reconnaissance de l’adaptateur hôte réseau, sachez que le pilote NDIS6 VirtualBox est sans doute à l’origine.
La solution est d’utiliser l’ancien driver en version NDIS5. Désinstallez VirtualBox et réinstallez-le en ligne de commande.
C:\Users\Me\Downloads>VirtualBox-5.0.11-104101-Win.exe -msiparams NETWORKTYPE=NDIS5
Lors d’une mise à jour, vous pouvez alors redémarrer les machines gérées par Vagrant directement depuis l’interface VirtualBox.
Installez Vagrant
Vagrant est un utilitaire en ligne de commande qui permet de gérer le cycle de vie de machines virtuelles. Il permet d’initialiser des machines depuis des dépôts en ligne, paramétrer les machines pour, par exemple, configurer le réseau ou les répertoires partagés, approvisionner les machines pour répliquer des environnements, etc.
Il fonctionne conjointement avec des fournisseurs pour la virtualisation, dont VirtualBox. Pour installer les dernières versions de Vagrant et les faire fonctionner avec VirtualBox vous devez avoir une version à jour de VirtualBox.
Téléchargez et installez Vagrant :
https://www.vagrantup.com/downloads.html
Ouvrez une invite de commande et vérifiez le fonctionnement :
vagrant --version
Vagrant possède des extensions, installez l’extension qui permet d’installer automatiquement les additions clientes VirtualBox sur le système invité :
vagrant plugin install vagrant-vbguest
Créez une machine virtuelle avec Docker installé
Nous allons créer une machine sous Ubuntu depuis les images de HashiCorp (pourvoyeur de la solution Vagrant).
Ouvrez une invite de commande dans un répertoire que vous dédierez à vos machines virtuelles (ex. C:/Vagrant).
Téléchargez et décompressez l’archive qui contient la configuration de la machine virtuelle.
Créez et démarrez la machine virtuelle :
vagrant up
Cette dernière commande permet à l’utilitaire de construire une machine virtuelle. Si tout se passe correctement, une image d’Ubuntu nommée « ubuntu/trusty64 » est téléchargée et configurée sous VirtualBox. Vous pourrez ultérieurement modifier votre fichier pour paramétrer le nom d’hôte, l’adresse IP sur le réseau privé, ou encore les répertoires partagés.
Lorsque la machine est opérationnelle, elle est ensuite approvisionnée par un script shell, le script run.sh. Ce script installe Docker, docker-compose, et renseigne un certificat qui permet d’accéder aux dépôts Docker de votre entreprise.
Connectez-vous en ssh sur la machine :
vagrant ssh
Passez en mode utilisateur root :
sudo su -
Vérifiez l’installation :
docker --version
docker-compose --version
Puis vérifiez la connexion au dépôt de votre entreprise :
docker login https://docker.
Déconnectez l’utilisateur root et quittez la session ssh :
exit
exit
Arrêtez ou redémarrez la machine virtuelle
Ouvrez une invite de commandes et positionnez-vous sous le répertoire qui contient le fichier Vagrantfile.
Pour arrêter la VM :
vagrant halt
Pour démarrer la VM :
vagrant up
Pour se connecter à la VM et passer en utilisateur root :
vagrant ssh
sudo su -
Modifiez la configuration de la machine virtuelle
Vous pouvez modifier la configuration en éditant le fichier Vagrantfile et relancer la machine pour convenir à vos besoins.
Modifiez le nom d’hôte
Attribuez un nom d’hôte à votre machine, ce paramètre modifie le contenu du fichier /etc/hostname :
config.vm.hostname = "xx-docker-vm"
Modifiez l’adresse IP de la machine
Vous pouvez attribuer une IP arbitraire à cette VM, attention à ne pas créer de conflit avec le réseau existant, certaines plages d’adresse sont réservées ou utilisées :
config.vm.network "private_network", ip: "xxx.xxx.xx.xx"
Indiquez les répertoires partagés
Si vous souhaitez importer des conteneurs Docker ou les codes sources de vos projets, vous aurez besoin de répertoires partagés. Par ex. :
config.vm.synced_folder ".", "/vagrant", type: "nfs"
config.vm.synced_folder "C:\\wamp\\www", "/www", type: "nfs"
Ceci a pour effet de monter le répertoire courant (où se situe le fichier Vagrantfile) sur le répertoire de la machine invité /vagrant (ce répertoire pré-existe dans l’image HashiCorp ubuntu/trusty64).
ATTENTION, la seconde instruction ne peut aboutir que si vous créez au préalable le répertoire /www sous une connexion ssh, dans le cas où le répertoire n’existe pas, une erreur rsync est retournée.
Effectuez des redirections de port
Lorsque vous installerez des services, vous voudrez peut-être effectuer des redirections de l’hôte vers l’invité. Par ex. :
config.vm.network "forwarded_port", guest: 80, host: 8080
Toutes nos publications sur Linkedin !