virli/tutorial/docker-basis/installation.md
2019-10-16 03:55:32 +02:00

163 lines
5.2 KiB
Markdown

\newpage
Installation
============
## 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.
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 :
<div lang="en-US">
```
x86_64
```
</div>
Assurez-vous également d'avoir un noyau récent, avec la commande `uname -r` :
<div lang="en-US">
```
5.2.14-gentoo
```
</div>
Vous ne pourrez pas utiliser Docker avec un noyau antérieur à la version 3.10.
## Par le gestionnaire de paquets
En général, votre distribution mettra à votre disposition une version de Docker
plus ou moins récente. Sous Debian et ses dérivés (Ubuntu, Mint, ...) le paquet
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 :
<https://docs.docker.com/install/linux/docker-ce/debian/>
**Et Kali Linux alors ?** Kali étant basée sur Debian, référez-vous à
la procédure d'installation de cette distribution.
## Windows et macOS
Bien que les fonctionnalités de contenerisation de Docker que nous utiliserons
ne soient disponibles que sous Linux, il est possible d'utiliser Docker de
manière déportée : le daemon Docker tournera dans une VM Linux, mais vous
pourrez interagir avec lui via votre ligne de commande habituelle.
Téléchargez la version correspondante à votre système d'exploitation :
* [Docker for Mac](https://hub.docker.com/editions/community/docker-ce-desktop-mac)
* [Docker for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows)
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.
## Évaluation en ligne
Si vous rencontrez des difficultés pour vous lancer, le projet
[Play With Docker](https://labs.play-with-docker.com/) vous donne accès à
un bac à sable dans lequel vous pourrez commencer à faire ce TP.
Il vous faudra disposer [d'un compte
Docker](https://hub.docker.com/signup). Une fois identifié, vous pourrez créer
une nouvelle instance, et vous connecter dessus via SSH.
## Vérifier la bonne marche de l'installation
Vous devriez maintenant être capable de lancer la commande suivante :
<div lang="en-US">
```bash
docker version
```
</div>
Une sortie similaire au bloc suivant devrait apparaître sur votre écran :
<div lang="en-US">
```
Client:
Version: 19.03.2
API version: 1.40
Go version: go1.12.9
Git commit: 6a30dfc
Built: Mon Sep 16 15:56:27 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.12)
Go version: go1.12.9
Git commit: 6a30dfc
Built: Mon Sep 16 15:55:09 2019
OS/Arch: linux/amd64
Experimental: true
```
</div>
### Versions de Docker
Historiquement, Docker est un projet open-source. Depuis quelques années, le
business-model de la société a évolué et ils proposent désormais deux
éditions : *Community Edition* et *Enterprise Edition*. La seconde est payante
et possède un certain nombre d'atouts pour faciliter son adoption en entreprise
(notamment pas mal d'interfaces graphiques, etc.). Le cœur de la technologie,
qui nous intéresse princialement dans ce cours, est entièrement présent dans
l'édition communautaire, sans limitation.
Depuis mars 2017, les numéros de version de Docker sont tirés de l'année et
du mois de parution (comme on a l'habitude avec Ubuntu 16.04 par exemple). Le
rythme actuel de parution est d'une version par trimestre (mars, juin,
septembre, décembre).[^versions]
[^versions]: Tous les détails sur les versions (CE/EE et numérotation,
fréquences, ...) sont résumés dans cette annonce :
<https://blog.docker.com/2017/03/docker-enterprise-edition/>
### `no such file or directory`?
Si vous avez cette erreur : `dial unix /var/run/docker.sock: no such file or
directory.`, le deamon n'est sans doute pas lancé. Lancez-le :
<div lang="en-US">
```bash
sudo service docker restart
```
</div>
### `permission denied`?
Si vous avez cette erreur : `dial unix /var/run/docker.sock: permission
denied.`, ajoutez votre utilisateur au groupe `docker` et **relancez votre
session** :
<div lang="en-US">
```bash
sudo gpasswd -a $USER docker
```
</div>
**Attention :** cette action n'est pas anodine d'un point de vue sécurité :
<https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface>