162 lines
5.0 KiB
Markdown
162 lines
5.0 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
|
|
Debian *Jessie or newer*.
|
|
|
|
|
|
## 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://store.docker.com/editions/community/docker-ce-desktop-mac)
|
|
* [Docker for Windows](https://store.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.
|
|
|
|
|
|
## 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>
|