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.
Il y a deux éditions de Docker :
- Docker CE : Community Edition
- Docker EE :Enterprise Edition
Pour plus d’info : tableau docker edition
Liens utiles (EN) :
- Site web : docker.com/
- Documentation : docs.docker.com/
- Docker Hub : Official Repositories
- Docker Store : store.docker.com/
- Télécharger Docker : win/stable/Docker for Windows Installer.exe
Compatibilité avec Windows :
- Windows 10 Pro : version Fall Creators Update
- Windows Server 2016 : version 1709 +
Microsoft docs (FR) :
- Moteur Docker sur Windows : manage-docker/configure-docker-daemon
- Conteneurs Windows 10 : windowscontainers/quick-start/quick-start-windows-10
- Conteneurs Windows Server : windowscontainers/quick-start/quick-start-windows-server
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
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 :
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.
- Cliquez sur Ok
- Une fois terminé, vous devez redémarrer votre ordinateur.
- Cliquez sur Close and log out
- Après le redémarrage de l’ordinateur, Docker va se lancer automatiquement.
- Ensuite, un message s’affiche concernant les fonctionnalités Hyper-V
- 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.
- Effectuez un clic-droit sur l’icône Docker
- Cliquez sur Settings
- 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 Dockerdans la barre des tâches
- Cliquez sur : 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.
- 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
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.