109 lines
2.8 KiB
Markdown
109 lines
2.8 KiB
Markdown
\newpage
|
|
|
|
Installation
|
|
============
|
|
|
|
## Prérequis
|
|
|
|
Docker repose sur plusieurs techniques implémentés dans les récents noyaux
|
|
Linux. Nous consacrerons les prochains cours à comprendre leurs
|
|
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 :
|
|
|
|
```
|
|
x86_64
|
|
```
|
|
|
|
Assurez-vous également d'avoir un noyau récent, avec la commande `uname -r` :
|
|
|
|
```
|
|
4.7.2-gentoo
|
|
```
|
|
|
|
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`.
|
|
|
|
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/engine/installation/linux/>
|
|
|
|
Installez également le paquet `docker-compose`.
|
|
|
|
|
|
## Vérifier la bonne marche de l'installation
|
|
|
|
Vous devriez maintenant être capable de lancer la commande suivante :
|
|
|
|
```
|
|
docker version
|
|
```
|
|
|
|
Une sortie similaire au bloc suivant devrait apparaître sur votre écran :
|
|
|
|
```
|
|
Client:
|
|
Version: 1.12.1
|
|
API version: 1.24
|
|
Go version: go1.7
|
|
Git commit: 23cf638
|
|
Built:
|
|
OS/Arch: linux/amd64
|
|
|
|
Server:
|
|
Version: 1.12.1
|
|
API version: 1.24
|
|
Go version: go1.7
|
|
Git commit: 23cf638
|
|
Built:
|
|
OS/Arch: linux/amd64
|
|
```
|
|
|
|
### `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 :
|
|
|
|
```
|
|
sudo service docker restart
|
|
```
|
|
|
|
|
|
### `permission denied`?
|
|
|
|
Si vous avez cette erreur : `dial unix /var/run/docker.sock: permission
|
|
denied.`, ajoutez votre utilisateur au groupe `docker` et **relancer votre
|
|
session** :
|
|
|
|
```
|
|
sudo gpasswd -a $USER docker
|
|
```
|
|
|
|
**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>
|
|
|
|
|
|
## Rendu
|
|
|
|
### Questions
|
|
|
|
1. Dans quel langage Docker a-t-il été écrit ?
|
|
|
|
1. Décrivez une méthode permettant à un utilisateur (non-root), présent dans le
|
|
groupe `docker`, d'effectuer une action privilégiée impactant la machine
|
|
hôte.
|