Installation Docker sous Windows 10

Docker est une plate-forme logicielle open source qui vous permet de concevoir, tester et déployer des applications dans des conteneurs virtualisés sur un système d’exploitation. Autrement dit, c’est une solution de virtualisation applicative qui isole l’application de votre système d’exploitation. Nous verrons ci-dessous en détail le fonctionnement de Docker et les conteneurs.

Ce que vous devait savoir avant l’installation de Docker sous Windows :

  • Docker for Windows nécessite les fonctionnalités Microsoft Hyper-V pour fonctionner correctement
  • Vous ne pouvez pas utiliser VirtualBox lorsque Docker est en cours d’utilisation
  • La virtualisation doit être activée sur votre PC, depuis le BIOS
  • Les conteneurs et les images créés avec Docker pour Windows sont partagés entre tous les comptes utilisateurs
  • Si votre ordinateur ne supporte pas Hyper-V, vous ne pouvez pas utiliser Docker for Windows (voir Docker Toolbox)

Remarque : Si vous utilisez par exemple Docker et un jour, vous souhaitez utiliser Virtualbox, vous devez désactiver les fonctionnalités Hyper-V et donc, impossible d’utiliser Docker.

Editions Docker :docker logo pixelabs

Il y a deux éditions de Docker :

Pour plus d’info : tableau docker edition

Liens utiles  (EN) :

Compatibilité avec Windows :

  • Windows 10 Pro : version Fall Creators Update
  • Windows Server 2016 : version 1709 + 

Microsoft docs (FR) :

Composants Docker

Docker for Windows comprend :

  • Docker Engine : daemon, le moteur de base qui gérer les conteneurs.
  • Docker CLI client : Command Line Interface client pour Windows
  • Docker Compose : permets de définir (en YAML) et d’exécuter des applications docker multi-conteneurs
  • Docker Machine : permets de provisionner plusieurs hôtes Docker distants sur différentes plateformes.
  • Kitematic : racheté par Docker, permet de faciliter l’utilisation de Docker (Win/Mac) via une interface graphique.

Activer la Virtualisation

Vérifiez que la virtualisation est activée sur votre PC :

  • Windows 10 : Ouvrir le Gestionnaire des tâches > Onglet Performance > Processeur

Virtualisation Windows Check Tools

Sinon, l’activer depuis le BIOS.

VMs ou Conteneurs ?

Bon, c’est quoi cette histoire de conteneurs, je ne comprends rien ! et bien…c’est simple. La virtualisation traditionnelle que vous connaissez déjà, nous permet, via un hyperviseur, de virtualiser un système d’exploitation complet sur une machine physique.

Ce n’est pas le cas des conteneurs Docker. En effet, Il n’est pas nécessaire de virtualiser un système d’exploitation complet pour chaque application. Les applications s’exécutent directement sur le système d’exploitation de la machine physique (machine hôte), accédant directement aux ressources nécessaires, donc, une meilleure exploitation des machines physiques.

Voici un petit schéma :

Schema Virtual Machines vs Docker Containers

Le point sombre de Docker : C’est les conteneurs qui distinguent Docker des autres solutions de virtualisation. Ils permettent d’isoler les applications, mais partagent le même système d’exploitation sur lequel Docker est installé (machine hôte). Une attaque (Virus, Spyware…etc) ou une panne du système d’exploitation (machine hôte) peut altérer tous les conteneurs. Pour minimiser les risques, il est possible d’exécuter les conteneurs dans des machines virtuelles. Finalement, cette solution ne convient peut-être pas à tout le monde.

Installation de Docker

Let’s Go, lancez l’installation de Docker.

Installation de Docker sous Windows 10 Etape 1

  • Cliquez sur Ok

  • Une fois terminé, vous devez redémarrer votre ordinateur.
  • Cliquez sur Close and log out

Installation de Docker sous Windows 10 Etape 3

  • Après le redémarrage de l’ordinateur, Docker va se lancer automatiquement.
  • Ensuite, un message s’affiche concernant les fonctionnalités Hyper-V

Installation de Docker sous Windows 10 Etape 4

  • Cliquez Ok pour activer les fonctionnalités Hyper-V
  • Votre ordinateur va redémarrer automatiquement pour appliquer la mise à jour (Hyper-V)
  • Une fois l’ordinateur redémarré, une fenêtre Docker s’affiche et indique que Docker et en cours et prêt.

Installation de Docker sous Windows 10 Etape 5            Installation de Docker sous Windows 10 Etape 6

  • Effectuez un clic-droit sur l’icône Docker
  • Cliquez sur Settings

Docker Settings Windows 10

  • D’autres paramètres apparaîtront une fois la mise en place d’un conteneur Linux/Windows
  • Adapter les paramètres à votre façon.
  • C’est terminé pour l’installation.

Docker Windows CLI

Testons le bon fonctionnement de Docker en ligne de commande. Lancez la console Windows PowerShell.

Afficher la version client/serveur :

PS C:\WINDOWS\system32#> docker version
Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:05:28 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.24)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:23:19 2018
  OS/Arch:          windows/amd64
  Experimental:     false
PS C:\WINDOWS\system32>

Afficher les infos sur l’installation de Docker :

PS C:\WINDOWS\system32#> docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.06.0-ce
Storage Driver: windowsfilter
 Windows:
Logging Driver: json-file
...
Swarm: inactive
Default Isolation: hyperv
# Kernel Version: 10.0 17134 (17134.1.amd64fre.rs4_release.180410-1804)
# Operating System: Windows 10 Pro Version 1803 (OS Build 17134.165)
OSType: windows
Architecture: x86_64
...
Name: PIXELABS
...
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

PS C:\WINDOWS\system32>

Lister les commandes Docker. Tapez simplement : docker 

PS C:\WINDOWS\system32#> docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "C:\\Users\\pixelabs\\.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level
                           ("debug"|"info"|"warn"|"error"|"fatal")
                           (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "C:\\Users\\pixelabs\\.docker\\ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "C:\\Users\\pixelabs\\.docker\\cert.pem")
      --tlskey string      Path to TLS key file (default
                           "C:\\Users\\pixelabs\\.docker\\key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  config      Manage Docker configs
# container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.
PS C:\WINDOWS\system32>

Afficher de l’aide pour la commande container par exemple.

PS C:\WINDOWS\system32#> docker container --help

Usage:  docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker container COMMAND --help' for more information on a command.
PS C:\WINDOWS\system32>

Lister les images Docker :

PS C:\WINDOWS\system32#> docker image ls

Lister les conteneurs Docker :

PS C:\WINDOWS\system32#> docker container ls

Windows/Linux containers

Par défaut, vous pouvez déjà commencer à déployer des conteneurs Windows :

PS C:\WINDOWS\system32> docker version
Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:05:28 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.24)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:23:19 2018
 #OS/Arch:          windows/amd64
  Experimental:     false
PS C:\WINDOWS\system32>

Mais, vous ne pouvez pas déployer un conteneur Linux et, c’est normal. Il faut d’abord changer de “mode”, c’est à dire, passer en mode Linux Containers :

  • Effectuez un clic-droit sur l’icône Docker dans la barre des tâches
  • Cliquez sur : Switch to Linux containers…

Docker Switch to Linux Containers

  • Un message vous indique que les conteneurs Windows existants continueront de fonctionner normalement, mais vous ne pourrez pas les gérer tant que vous n’aurez pas basculé vers les conteneurs Windows. Aucune donnée ne sera perdue.

Switch between Linux Containers and Windows Containers

  • Cliquez sur Switch
  • Patientez un petit moment…
PS C:\WINDOWS\system32> docker version
Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:05:28 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:13:46 2018
 #OS/Arch:          linux/amd64
  Experimental:     false
PS C:\WINDOWS\system32>

Docker est prêt pour le déploiement des conteneurs Linux.

Docker Store (images)

Docker a mis à votre disposition un grand nombre d’images “préconstruites”. Vous pouvez explorer la liste depuis le Docker Store

Docker Store Official Images

Mais, il y a une chose à savoir. Les images se trouvant dans le Docker Store, c’est des images officielles vérifiées par Docker (certaines images sont payantes). Vous pouvez donc foncer, il n’y a aucun risque de tomber sur une image/application foireuse, mal sécurisée ou bourrée de virus…etc.

Si bien sûr, vous ne trouvez pas ce que vous cherchez dans le Docker Store, il y a de fortes chances de trouver votre image dans le registre communautaire (Docker Hub) où les images sont déposées par n’importe qui. Méfiez-vous donc, consultez le nombre de téléchargements de l’application en question, la note attribuée par les internautes, recherche Google…etc.

C’est terminé pour ce chapitre les amis. Rendez-vous pour la deuxième partie, gestion des conteneurs Docker avec Kitematic.

Bonne journée et à très bientôt.

Laisser un commentaire