tuto: Prepare for 2022

This commit is contained in:
nemunaire 2021-09-12 10:31:36 +02:00
commit af860b40a0
40 changed files with 246 additions and 1974 deletions

View file

@ -3,15 +3,19 @@
Installation
============
Avant de voir de quoi il s'agit, afin de gagner du temps, nous allons commencer
par installer Docker.
## Prérequis
Docker repose sur plusieurs techniques implémentées dans les récents noyaux
Linux. Nous consacrerons les prochains cours à comprendre leur
fonctionnement. Ces techniques ne sont pas limitées à une architecture de
microprocesseur spécifique (comme peuvent l'être les instructions de
virtualisation nécessaire pour rendre les hyperviseurs attractifs) ; cependant
la communauté autour de Docker utilisant principalement l'architecture `amd64`,
c'est sur cette dernière que Docker pourra être exploité à son plein potentiel.
Linux (et plus marginalement, Windows). Nous consacrerons les prochains cours à
comprendre leur fonctionnement. Ces techniques, contrairement aux instructions
de virtualisation qui rendent les hyperviseurs attractifs, ne sont pas limitées
à une architecture de microprocesseur spécifique ; cependant la communauté
autour de Docker utilise principalement l'architecture `amd64`, c'est sur cette
dernière que Docker pourra être exploité à son plein potentiel, suivi de près
par l'architecture `arm64`.
Avant de continuer, assurez-vous que votre machine a bien démarré sur un noyau
64 bits. Le retour de la commande `uname -m` doit vous indiquer :
@ -22,15 +26,24 @@ x86_64
```
</div>
Ou si vous êtes intrépide :
<div lang="en-US">
```
aarch64
```
</div>
Assurez-vous également d'avoir un noyau récent, avec la commande `uname -r` :
<div lang="en-US">
```
5.8.9-gentoo
5.14.2-gentoo
```
</div>
Vous ne pourrez pas utiliser Docker avec un noyau antérieur à la version 3.10.
Rassurez-vous, même si vous n'avez pas compilé le dernier noyau disponible sur
<kernel.org>, Docker s'utilise à partir de Linux 3.10.
## Par le gestionnaire de paquets
@ -40,9 +53,10 @@ plus ou moins récente. Sous Debian et ses dérivés (Ubuntu, Mint, ...) le paqu
a été nommé [`docker.io`](https://packages.debian.org/sid/docker.io).
Si dans un environnement de production, on préférera sans doute utiliser une
version déjà bien éprouvée, pour ce cours, nous allons avoir besoin de la
**dernière version disponible**. Référez-vous à la documentation officielle
correspondant à votre distribution :
version déjà bien éprouvée (comme celle des dépôts de sa distribution), pour ce
cours, nous allons avoir besoin de la **dernière version
disponible**. Référez-vous à la documentation officielle correspondant à votre
distribution :
<https://docs.docker.com/engine/install/debian/>
@ -66,6 +80,13 @@ Une fois l'installation terminée, lancez l'application : elle ajoutera une
icône dans la zone de notification, vous permettant de contrôler l'exécution de
la machine virtuelle sous-jacente.
Notez qu'à partir de janvier 2022, ces applications passent sous une licence
payante pour les grosses entreprises[^TODO]. Cela ne concernera nous concerne
pas, car la licence est gratuite pour un usage éducatif ou personnel. Notez que
ce n'est pas le binaire Docker qui change de licence, elle reste libre, mais
seulement les applications Docker Desktop.
[^TODO]: FIXME article de blog concernant docker desktop
## Évaluation en ligne
@ -93,32 +114,33 @@ Une sortie similaire au bloc suivant devrait apparaître sur votre écran :
<div lang="en-US">
```
Client:
Version: 19.03.12
API version: 1.40
Go version: go1.14.6
Git commit: 48a66213fe
Built: Thu Aug 6 01:27:59 2020
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d28e
Built: Wed Aug 4 12:55:42 2021
OS/Arch: linux/amd64
Context: default
Experimental: false
Server:
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12)
Go version: go1.14.6
Git commit: 48a66213fe
Built: Thu Aug 6 01:26:25 2020
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d88bc
Built: Wed Aug 4 12:55:42 2021
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.2.13
GitCommit: 35bd7a5f69c13e1563af8a93431411cd9ecf5021
Version: 1.5.5
GitCommit: 72cec4be58a9eb6b2910f5d10f1c01ca47d231c0.m
runc:
Version: 1.0.0-rc10
GitCommit:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2d
docker-init:
Version: 0.18.0
GitCommit: fec3683b971d9c3ef73f284f176672c44b448662
Version: 0.19.0
GitCommit: de40ad0
```
</div>

View file

@ -7,7 +7,7 @@ Docker est un écosystème d'outils de haut niveau, permettant d'utiliser des
*conteneurs*.
Docker est composé d'un daemon lancé au démarrage de votre machine, avec lequel
vous interagissez via un client (le programme `docker`). La communication entre
nous interagissons via un client (le programme `docker`). La communication entre
le daemon et le client s'effectuant sur une API REST généralement au travers
d'une socket.
@ -21,6 +21,9 @@ au deamon dans la machine virtuelle.[^dockermachine]
`DOCKER_HOST` ou de passer le paramètre `-H` suivi de l'URL de la socket à
`docker`. Voir aussi : <https://docs.docker.com/machine/overview/>
Commençons par planter le décors, en détaillant les principaux mécanismes de
Docker.
## Les images Docker
@ -29,7 +32,7 @@ d'un ensemble de couches, agrégées selon le principe d'UnionFS.
Une image peut, par exemple, contenir :
* un système Ubuntu complet,
* un système Ubuntu opérationnel,
* le programme `busybox`,
* un serveur web et votre application web, prêts à l'emploi,
* ...
@ -45,7 +48,7 @@ les outils fournis, soit les récupérer depuis un registre.
Alors que les images constituent la partie immuable de Docker, les conteneurs
sont sa partie vivante. Chaque conteneur est créé à partir d'une image : à
chaque fois que vous lancez un conteneur, une couche lecture/écriture est
chaque fois que nous lançons un conteneur, une couche lecture/écriture est
ajoutée au dessus de l'image. Cette couche est propre au conteneur et
temporaire : l'image n'est pas modifiée par l'exécution d'un conteneur.
@ -67,3 +70,7 @@ Le registre utilisé de base est le [Docker Hub](https://hub.docker.com/) : il
contient à la fois des images officielles (ubuntu, debian, nginx, ...), des
images créées par des utilisateurs, mais aussi des images de grands éditeurs,
payantes, à destination des entreprises.
Des registres alternatifs existent comme celui de
[quay.io](https://quay.io/#FIXME), et les dépôts de sources tels que [GitHub](#FIXME) et
[GitLab](#FIXME) le proposent également.