diff --git a/HowtoDocker.md b/HowtoDocker.md new file mode 100644 index 00000000..1c62d3b1 --- /dev/null +++ b/HowtoDocker.md @@ -0,0 +1,153 @@ +--- +title: Howto Docker +categories: docker +--- + +Docker est une solution qui permet de créer, déployer et gérer en toute +simplicité des conteneurs Linux. +Elle combine plusieurs technologies pour rendre l'utilisation +des conteneurs accessible à tous. + +# Docker Engine + +## Installation + +Les procédures d'installation suivantes sont destinées à Debian 8 (Jessie) + +### Manuelle + +``` +# echo "deb http://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list +# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D +# apt update +# apt install docker-engine +# adduser docker +``` + +### Ansible +Le rôle docker-host permet d'installer le docker-engine sur un hôte distant et +de l'exposer à l'externe ou non. + +La documentation concernant l'utilisation du rôle est située dans son répertoire. + +#### TLS +Lorsque le docker-engine est exposé, il est important de le sécuriser avec TLS. + +Au moment de l'installation, une version altérée de shellpki est copiée dans le +répertoire docker/tls. Ensuite, les certificats et la clé sont créés pour le +serveur. (`shellpki init`) + +Pour autoriser des hôtes à se connecter à l'engine, il faut leur créer une clé +et un certificat. +Pour ce faire, il suffit de lancer le script: + +``` +/home/docker/tls$ ./shellpki create +``` + +Les fichiers seront créés, par défaut, dans le répertoire +`/home/docker/tls/files/$CN` + +## Utilisation de base + +Une image Docker contient un OS avec un ou plusieurs services préconfigurés. +Un conteneur quant à lui est une instance (créée à partir d'une image) +en cours d'execution. + +### Lister les conteneurs et les images: +``` +$ docker ps [options] +``` +Voici quelques options utiles pour la commande `ps` +``` +-a : Lister tous les conteneurs +-l : Lister les conteneurs récentralise +-q : Lister uniquement les ID des conteneurs +``` + +### Démarrer un conteneur +``` +$ docker run [options] IMAGE [commande] +``` +Options courantes: +``` +--name="nom" : Donner un nom au conteneur +-p port_hôte:port_conteneur : Rendre un port accessible depuis l'hôte +-d : Lancer le conteneur en mode 'détaché' +-it : Lancer le conteneur en mode intéractif avec tty +``` +Pour plus d'options, consulter `$ man docker run` + +### Éteindre ou tuer un conteneur +``` +$ docker stop [options] CONTENEUR +ou +$ docker kill [options] CONTENEUR +``` +CONTENEUR correspond au nom ou à l'ID du conteneur. + +Lorsque le conteneur n'est plus en fonction, il existe toujours et peut être +lister à l'aide de la commande `$ docker ps -a` + +### Supprimer un conteneur ou une image +``` +$ docker rm [options] CONTENEUR +ou +$ docker rmi [options] IMAGE +``` + +### Exécuter des commandes au sein d'un conteneur en marche +``` +$ docker exec [options] CONTENEUR COMMANDE +``` +Options courante: +``` +-it : Lancer la commande de manière intéractive dans un TTY. +``` + +### Visionner les logs d'un conteneur +``` +$ docker logs [options] CONTENEUR +``` +Option: +``` +-f : Suivre les logs en direct +``` + +### Se connecter à un conteneur en marche +S'il est nécessaire d'intéragir directement avec un process lancé dans un +conteneur, il faut utiliser la commande `attach`. +Dans le cas où l'on souhaite simplement visionner la sortie (logs) du conteneur, +il faut utiliser `logs`. +Pour lancer un terminal ou une commande supplémmentaire, utiliser `exec`. +``` +docker attach [options] CONTENEUR +``` + +**ATTENTION!!!** + +Lorsque le conteneur est attaché, l'utilisation de *CTRL+C* termine le processus +en cours. La commande *CTRL+P+Q* doit être utilisé ou l'on doit ajouter l'option +`--sig-proxy=false` lors du lancement ou de l'attachement. + + +### Astuces +Éteindre/Tuer/Supprimer tous les conteneurs: +``` +$ docker stop|kill|rm $(docker ps -aq) +``` + +Supprimer toutes les images: +``` +$ docker rmi $(docker images -q) +``` + +Lancer un terminal bash dans un conteneur en marche: +``` +$ docker exec -it CONTENEUR bash +``` + +Démarrer un conteneur avec un terminal bash: +``` +$ docker run -it IMAGE bash +```