Docker sous Windows 10

Installation de docker sur WSL

L’objectif est d’installer docker sur WSL (Windows Subsystem for Linux) et de démarrer le service à l’ouverture de session.

$ sudo apt update ; sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt update
$ sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu 
Prendre la version indiquée
  • Erreur si mauvaise version :
eric@DESKTOP-A9ZZL:/mnt/c/Windows/System32$ sudo docker run --rm hello-world
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:319: getting the final child's pid from pipe caused \"EOF\"": unknown.

Pour empêcher les mises à jour :

# apt-mark hold docker-ce
docker-ce set on hold.

Lors d’un apt upgrade, le package sera listé dans la liste des maintenus :

# apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  docker-ce

Si on souhaite libérer

# apt-mark unhold docker-ce

Afin de pouvoir piloter docker avec le compte utilisateur je l’ajoute au groupe docker

sudo usermod -a -G docker $USER
  • Automatiser à l’ouverture de session Start Docker in an Elevated Prompt when Windows Boots Now that it’s possible to start Docker with a single non-interactive command, we can run it as an administrator when your system boots.

Création du script de lancement

/usr/local/sbin/start_docker.sh

#!/usr/bin/env bash
sudo cgroupfs-mount
sudo service docker start
chmod +x /usr/local/sbin/start_docker.sh
sudo chmod 755 /usr/local/sbin/start_docker.sh
  • Ajout de l’utilisateur au groupe sudo

Ajouter tout en bas du fichier /etc/sudoers

<your username here> ALL=(ALL:ALL) NOPASSWD: /bin/sh 
/usr/local/sbin/start_docker.sh
  • Création d’une tâche Windows
Bien activer l’exécution avec privilège

Argument : -c "sudo /bin/sh /usr/local/sbin/start_docker.sh

  • Validation
docker run --rm hello-world
Validation fonctionnement

Related