\newpage # Installation ## Par le gestionnaire de paquets Sous Debian et ses dérivés (Ubuntu, Mint, ...) le paquet et la commande ont été nommés `docker.io`. Vous pouvez vous créer un alias `alias docker=docker.io` si celui-ci n'a pas déjà été défini. Sous les autres distributions, `docker` correspond a priori bien à la solution de virtualisation légère que l'on va utiliser. ### Debian Jessie `docker` se trouve dans les backports, ajouter-les à votre `/etc/apt/sources.list` : ``` deb http://ftp.debian.org/debian/ wheezy-backports main non-free contrib ``` Puis : ``` apt-get update apt-get install docker.io ``` ### Debian Wheezy Il vous faut utiliser le dépôt de paquets fourni par Docker : ``` apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D ``` Ajoutez cette ligne dans votre `/etc/apt/sources.list` : ``` deb https://apt.dockerproject.org/repo debian-wheezy main ``` Puis : ``` apt-get update apt-get install docker-engine ``` ## Manuellement L'équipe en charge de Docker met à disposition un script pour installer Docker sur n'importe quel système : ```sh curl -sSL https://get.docker.com/ | sh ``` ## 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.3.3 Client API version: 1.15 Go version (client): go1.3.3 Git commit (client): d344625 OS/Arch (client): linux/amd64 Server version: 1.3.3 Server API version: 1.15 Go version (server): go1.3.3 Git commit (server): d344625 ``` ### `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é : ## Rendu ### Questions 1. Dans quel langage Docker a-t-il été écrit ? Docker utilise la `libcontainer` afin d'avoir une couche d'abstraction des *namespaces* et des *cgroups*. Dois-je installer cette bibliothèque avant de recopier sur une nouvelle machine le binaire `docker` (sans passer par le gestionnaire de paquets) ? Pourquoi ? 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.