Je vais commencer une série sur Docker(pas d’un coup bien sûr 🙂 ) où j’expliquerai ce qu’est Docker et comment l’installer dans un premier article. Et par la suite (dans d’autres articles) j’expliquerai comment l’utiliser.
1. Qu’est ce qu’un conteneur ? Qu’est-ce que Docker ?
Vous connaissez la virtualisation avec des hyperviseurs VMWare, Hyper-V, Proxmox etc… ? Et bien dans la virtualisation vous avez une machine physique avec un OS, par dessus vous avez l’hyperviseurs (parfois même l’hypervieurs et l’OS font partie de la même couche). Au dessus de l’hyperviseur une machine virtuelle à qui nous allons attribuer des ressources hardaware (CPU, RAM etc …). Enfin sur la machine virtuelle vous avez un OS avec dedans une application.
Dans le conteneur, et bien on ne va pas avoir la couche hyperviseur ni la couche VM on va avoir le hardware, l’OS de la machine hôte puis l’applications qui s’exécutera dans un environnement isolé (le conteneur).
Schématisons cela :
Dans la virtualisation, on a la liberté d’installer un OS Windows, Linux ou autre dans une machine virtuelle alors qu’on l’a vue le conteneur n’a pas d’OS mais un environnement d’exécution; il va donc se reposer sur l’OS, c’est à dire le noyau de la machine hôte. Donc concrètement on ne pourra utiliser uniquement des conteneurs ayant le même noyau que l’hôte. C’est à dire des conteneurs Linux.
L’avantage avec la conteneurisation c’est que le conteneur va accéder plus rapidement aux ressources, le déploiement est très rapide même beaucoup plus rapide.
En résumé (ce qui ressort souvent), la virtualisation (avec les hyperviseurs) c’est de la virtualisation matérielle et les conteneurs sont de la virtualisation système.
Et Docker alors ?
Eh bien c’est un des logiciels de conteneurisation open source qui permet justement de gérer des conteneurs Linux.
2. Installer Docker sur Debian 10
Nous allons faire un « apt update » :
root@DockerSAVOIRITLAB:~# apt update
Et nous allons installer les paquets suivants :
root@DockerSAVOIRITLAB:~# apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
On ajoute ensuite la clé GPG :
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
On ajoute ensuite le repo docker :
root@DockerSAVOIRITLAB:~# echo \
> "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
> $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
On update les packages (pour pouvoir installé les nouveaux)car on a rajouté un autre miroir :
root@DockerSAVOIRITLAB:~# apt update
On installe ensuite la community édition de docker :
root@DockerSAVOIRITLAB:~# apt install docker-ce
On start le service et on l’enable(cette étape n’est pas nécessaire car de base le service est start et actif il me semble) :
root@DockerSAVOIRITLAB:~# systemctl start docker
root@DockerSAVOIRITLAB:~# systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
On va vérifier que tout est fonctionnel. On va d’abord vérifier la version de Docker :
root@DockerSAVOIRITLAB:~# docker version
Client: Docker Engine - Community
Version: 20.10.5
API version: 1.41
Go version: go1.13.15
Git commit: 55c4c88
Built: Tue Mar 2 20:17:50 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.5
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 363e9a8
Built: Tue Mar 2 20:15:47 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.4
GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc:
Version: 1.0.0-rc93
GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
docker-init:
Version: 0.19.0
GitCommit: de40ad0
On a la version 20.10.15 et surtout on a un docker client et un docker serveur très important pour la suite de l’utilisation de Docker.
Pour vérifier que cela fonctionne bien on va lancer un conteneur :
root@DockerSAVOIRITLAB:~# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Tout fonctionne bien ! On d’ailleurs le message « Hello from Docker!
This message shows that your installation appears to be working correctly. » qui nous indique que tout fonctionne correctement.
Docker est installé on va pouvoir passer à la suite et voir comment utiliser Docker dans les prochains tutos.