Académique Documents
Professionnel Documents
Culture Documents
1
La technologie du conteneur n’est pas nouvelle, elle date des années 2000,
notamment avec les Linux Containers ou « LCX ». Docker est une surcouche
qui rend le développement et le déploiement des conteneurs beaucoup plus
simple tout en les standardisant. La première version de Docker 1.0 est très
récente mais son adoption par les plus grands comptes de l’informatique en fait
déjà un outil de référence.
Qu’est-ce qu’un conteneur ?
Un conteneur est une enveloppe virtuelle qui permet de packager une
application avec tous les éléments dont elle a besoin pour fonctionner : fichiers
source, runtime, librairies, outils et fichiers. Ils sont packagés en un ensemble
cohérent et prêt à être déployé sur un serveur et son OS.
Contrairement à la virtualisation de serveurs et à une machine virtuelle, le
conteneur n’intègre pas d’OS, il s’appuie directement sur le système
d’exploitation du serveur sur lequel il est déployé.
Cette technologie a été développée sur une base Linux, mais devrait être
rapidement disponible sous Windows Server
Docker Engine :
Docker Daemon :
Le Docker Daemon traite les requêtes API afin de gérer les différents
aspects de l’installation tels que les images, les conteneurs ou les
volumes de stockage.
2
Docker Client :
Dockerfile :
Une image Docker est un modèle en lecture seule, utiliser pour créer
des conteneurs Docker. Elle est composée de plusieurs couches
empaquetant toutes les installations, dépendances, bibliothèques,
processus et codes d’application nécessaires pour un environnement de
conteneur pleinement opérationnel.
3
La fonctionnement de docker :
4
STANDARDISATION DES OPÉRATIONS
MIGRATION AISÉE
ÉCONOMIES CONSÉUENTES
Le fonctionnement de Docker :
5
présentes dans les cgroups (déplacement d’un conteneur à chaud entre deux
serveurs), c’est sur ce LXC qu’est basé Docker.
Grâce aux cgroups, Docker possède la couche de virtualisation de serveurs
nécessaire au fonctionnement des environnements virtuels, il va apporter la
couche de gestion, d’outils et des méthodes qui vont faciliter et même
révolutionner l’usage de cette technologie de virtualisation.
Docker Registry
Une des premières briques de Docker est son registre (registry). C’est une
bibliothèque d’images d’applications qui peut être publique, privée ou locale. Il
met à disposition les images, s’occupe du versionning de celles-ci, permet de
très facilement récupérer un conteneur en HTTP.
Docker demon client :
Il crée les environnements LXC sur le serveur, et s’occupe de paramétrer et
d’instancier le conteneur. On le pilote via une API RestFULL, qui offre une
grande souplesse dans la gestion des opérations (via un client local, un serveur
gestion de tous les conteneurs, etc.). C’est ce pilotage qui décuple la puissance
des conteneurs.
Dockerfile
C’est un fichier texte qui décrit la création d’un conteneur. Il permet d’avoir des
modèles de conteneur très personnalisables.
6
package logiciel, cette facilité permet au développeur de pouvoir provisionner
les environnements qui sont déployés en production par exemple sans
connaissance particulière d’infrastructures ou d’administration système.
Portabilité et multi cloud Il y a peu de formats d’enveloppes virtuelles qui
soient nativement multi-cloud. Il est toujours compliqué de récupérer sur sa
ferme VMware son POC fait sur AWS, ou encore migrer sa machine virtuelle
Openstack sur une Ressource Group Azure…
Avec Docker, vous pouvez, en quelques secondes, déployer votre test fait en
local sur votre poste, en production sur la très grande majorité des Clouds (pour
ne pas dire tous).
Orientation micro-services
Les nouvelles applications métiers, sites Web et nouvelles applications IT se
composent maintenant de micro-services, à l’inverse d’une application contenue
dans un seul serveur et une seule application.
On va trouver des serveurs HTTP, des serveurs de cache, des répartiteurs de
charge, des bases de données clés/valeurs, moteur d’API en nodejs….
Cette tendance répond à plusieurs objectifs :
Améliorer l’élasticité d’une application,
Augmenter la performance, chaque brique a un usage précis, dans laquelle
elle est optimisée,
L’architecture logicielle est aussi orientée microservices, le déploiement en
continu est facilité car on n’impacte pas tout le code de l’application lors
d’une modification,.
7
Ensuite, installez quelques paquets pré-requis qui permettent à apt d’utiliser les
paquets sur HTTPS :
1. sudo apt update
2.
Copy
Ensuite, installez quelques paquets pré-requis
qui permettent à apt d’utiliser les paquets sur
HTTPS :
1. sudo apt install apt-transport-
https ca-certificates curl
software-properties-common
2.
Copy
Ensuite, ajoutez la clé GPG du dépôt officiel
de Docker à votre système :
1. curl -fsSL
https://download.docker.com/linux/
ubuntu/gpg | sudo apt-key add -
2.
Copy
Ajoutez le référentiel Docker aux sources
APT :
1. sudo add-apt-repository "deb
[arch=amd64]
https://download.docker.com/linux/
ubuntu focal stable"
8
2.
Copy
Ensuite, mettez à jour la base de données des
paquets avec les paquets Docker à partir du
référentiel qui vient d’être ajouté :
1. sudo apt update
2.
Copy
Assurez-vous que vous êtes sur le point
d’installer à partir du dépôt Docker et non du
dépôt Ubuntu par défaut :
1. apt-cache policy docker-ce
2.
Copy
Vous verrez un résultat comme celui-ci, bien
que le numéro de version du Docker puisse
être différent :
Output of apt-cache policy docker-ce
docker-ce:
Installed: (none)
Candidate: 5:19.03.9~3-0~ubuntu-
focal
Version table:
9
5:19.03.9~3-0~ubuntu-focal
500
500
https://download.docker.com/linux/
ubuntu focal/stable amd64 Packages
Notez que le docker-ce n’est pas installé,
mais que le candidat à l’installation provient
du dépôt Docker pour Ubuntu 20.04 (focal).
Enfin, installez Docker :
1. sudo apt install docker-ce
2.
Copy
Le Docker devrait maintenant être installé, le
démon démarré, et le processus autorisé à
démarrer au boot. Vérifiez qu’il tourne :
1. sudo systemctl status docker
2.
Copy
La sortie devrait être similaire à ce qui suit,
montrant que le service est actif et en cours
d’exécution :
Output
● docker.service - Docker
Application Container Engine
10
Loaded: loaded
(/lib/systemd/system/docker.servic
e; enabled; vendor preset:
enabled)
Active: active (running)
since Tue 2020-05-19 17:00:41 UTC;
17s ago
TriggeredBy: ● docker.socket
Docs:
https://docs.docker.com
Main PID: 24321 (dockerd)
Tasks: 8
Memory: 46.4M
CGroup:
/system.slice/docker.service
└─24321
/usr/bin/dockerd -H fd:// --
containerd=/run/containerd/contain
erd.sock
L’installation de Docker vous donne
maintenant non seulement le service Docker
(démon) mais aussi l’utilitaire en ligne de
commande docker, ou le client Docker. Nous
allons voir comment utiliser la
commande docker plus loin dans ce tutoriel.
11
Étape 2 — Exécution de la commande Docker
sans sudo (facultatif)
Par défaut, la commande docker ne peut
être exécutée que par l’utilisateur root ou par
un utilisateur du groupe docker, qui est
automatiquement créé lors du processus
d’installation de Docker. Si vous essayez
d’exécuter la commande docker sans la faire
précéder de sudo ou sans être dans le
groupe docker, vous obtiendrez un résultat
comme celui-ci :
Output
docker: Cannot connect to the
Docker daemon. Is the docker
daemon running on this host?.
See 'docker run --help'.
Si vous voulez éviter de taper sudo chaque
fois que vous exécutez la commande docker,
ajoutez votre nom d’utilisateur au
groupe docker :
1. sudo usermod -aG docker ${USER}
2.
Copy
Pour appliquer la nouvelle appartenance au
groupe, déconnectez-vous du serveur et
reconnectez-vous, ou tapez ce qui suit :
12
1. su - ${USER}
2.
Copy
Vous serez invité à saisir le mot de passe
utilisateur pour continuer.
Vérifiez que votre utilisateur est maintenant
ajouté au groupe docker en tapant :
1. id -nG
2.
Copy
Output
sammy sudo docker
Si vous devez ajouter un utilisateur au
groupe docker pour lequel vous n’êtes pas
connecté, déclarez ce nom d’utilisateur
explicitement :
1. sudo usermod -aG docker
username
2.
Copy
La suite de cet article suppose que vous exécutez la
commande docker en tant qu’utilisateur dans le groupe docker. Si vous
choisissez de ne pas le faire, veuillez faire précéder les commandes
de sudo.
Examinons maintenant la commande docker.
Étape 3 — Utilisation de la commande Docker
L’utilisation de docker consiste à lui faire passer une chaîne d’options et
de commandes suivie d’arguments. La syntaxe prend cette forme :
13
1. docker [option] [command]
[arguments]
2.
Copy
Pour voir toutes les sous-commandes
disponibles, tapez :
1. docker
Pour voir les options disponibles pour une
commande spécifique, tapez :
1. docker docker-subcommand --help
2.
Copy
Pour voir les informations sur Docker à
l’échelle du système, utilisez :
1. docker info
2.
Output
Unable to find image 'hello-
world:latest' locally
latest: Pulling from
library/hello-world
0e03bdcc26d7: Pull complete
Digest:
sha256:6a65f928fb91fcfbc963f7aa6d5
7c8eeb426ad9a20c7ee045538ef34847f4
4f1
Status: Downloaded newer image for
hello-world:latest
...
Vous pouvez rechercher des images disponibles sur Docker Hub en
utilisant la commande docker avec la sous-commande search. Par
exemple, pour rechercher l’image Ubuntu, tapez :
1. docker search ubuntu
2.
Copy
Le script va parcourir Docker Hub et retourner une liste de toutes les
images dont le nom correspond à la chaîne de recherche. Dans ce cas,
la sortie sera similaire à celle-ci :
15
Output
NAME
DESCRIPTION
STARS OFFICIAL
AUTOMATED
ubuntu
Ubuntu is a Debian-based Linux
operating sys… 10908
[OK]
dorowu/ubuntu-desktop-lxde-vnc
Docker image to provide HTML5 VNC
interface … 428
[OK]
rastasheep/ubuntu-sshd
Dockerized SSH service, built on
top of offi… 244
[OK]
consol/ubuntu-xfce-vnc
Ubuntu container with "headless"
VNC session… 218
[OK]
ubuntu-upstart
Upstart is an event-based
replacement for th… 108
[OK]
ansible/ubuntu14.04-ansible
Ubuntu 14.04 LTS with
16
...
Une fois que vous avez identifié l’image que vous souhaitez utiliser, vous
pouvez la télécharger sur votre ordinateur à l’aide de la sous-
commande pull.
Exécutez la commande suivante pour télécharger l’image officielle
d’ubuntu sur votre ordinateur
1. docker pull ubuntu
vous pouvez alors lancer un conteneur en utilisant l’image téléchargée
avec la sous-commande run. Comme vous l’avez vu avec
l’exemple hello-world, si une image n’a pas été téléchargée
lorsque docker est exécuté avec la sous-commande run, le client
Docker téléchargera d’abord l’image, puis lancera un conteneur en
l’utilisant.
Pour voir les images qui ont été téléchargées sur votre ordinateur,
tapez :
1. docker images
2.
Copy
La sortie ressemblera à ce qui suit :
Output
REPOSITORY TAG
IMAGE ID CREATED
SIZE
ubuntu latest
1d622ef86b13 3 weeks ago
73.9MB
hello-world latest
bf756fb1ae65 4 months ago
13.3kB
17
Étape 5 — Exécution d’un conteneur Docker
Le conteneur hello-world que vous avez exécuté à l’étape
précédente est un exemple de conteneur qui fonctionne et qui quitte
après avoir émis un message de test. Les conteneurs peuvent être
beaucoup plus utiles que cela, et ils peuvent être interactifs.
hell dans le conteneur :
18
container_id
repository/new_image_name
1. docker images
19