HowtoDocker : amélioration/réorganisation de la partie utilisation de base

This commit is contained in:
Romain Dessort 2018-04-20 14:33:24 -04:00
parent 4fa90cd295
commit f8d058ebfd

View file

@ -3,19 +3,17 @@ title: Howto Docker
categories: docker categories: docker
--- ---
Docker est une solution qui permet de créer, déployer et gérer en toute Docker est une solution qui permet de créer, déployer et gérer des conteneurs
simplicité des conteneurs Linux. Linux.
Elle combine plusieurs technologies pour rendre l'utilisation
des conteneurs accessible à tous.
Documentation : <https://docs.docker.com/engine/installation/linux/docker-ce/debian/#install-docker-ce-1> Documentation : <https://docs.docker.com/>
Docker-Compose : [HowtoDockerCompose]()
# Docker Engine # Docker Engine
## Installation ## Installation
Il est conseillé d'utiliser le paquet docker-ce des dépôts du projet Docker :
~~~ ~~~
# apt install apt-transport-https # apt install apt-transport-https
# echo "deb http://download.docker.com/linux/debian stretch stable" > /etc/apt/sources.list.d/docker.list # echo "deb http://download.docker.com/linux/debian stretch stable" > /etc/apt/sources.list.d/docker.list
@ -31,9 +29,16 @@ Docker-Compose : [HowtoDockerCompose]()
> # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D > # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
> # apt update > # apt update
> # apt install docker-engine > # apt install docker-engine
> # adduser <USER> docker
> ~~~ > ~~~
Sur sa machine de travail, il est utile d'ajouter son utilisateur dans le
groupe _docker_ pour pouvoir interagir avec le démon _dockerd_ sans passer root
à chaque fois :
~~~
# adduser $USER docker
~~~
### Configuration ### Configuration
#### Changer le chemin de stockage #### Changer le chemin de stockage
@ -75,123 +80,178 @@ Les fichiers seront créés, par défaut, dans le répertoire
## Utilisation de base ## Utilisation de base
Une image Docker contient un OS avec un ou plusieurs services préconfigurés. Une image Docker contient un système minimal avec un ou plusieurs services.
Un conteneur quant à lui est une instance (créée à partir d'une image) Un conteneur quant à lui est une instance (créée à partir d'une image)
en cours d'execution. en cours d'exécution.
### Lister les conteneurs et les images: ### Gérer les conteneurs
#### Lister les conteneurs
~~~ ~~~
$ docker ps [options] $ docker ps
~~~ ~~~
Voici quelques options utiles pour la commande `ps` Options utiles :
~~~ ~~~
-a : Lister tous les conteneurs -a : lister tous les conteneurs
-l : Lister les conteneurs récentralise -l : lister les conteneurs récemment lancés
-q : Lister uniquement les ID des conteneurs -q : lister uniquement les ID des conteneurs
~~~ ~~~
### Démarrer un conteneur #### Instancier un nouveau conteneur
~~~ ~~~
$ docker run [options] IMAGE [commande] $ docker run <image> [commande]
~~~ ~~~
Options courantes: Options utiles :
~~~ ~~~
--name="nom" : Donner un nom au conteneur --name="nom" : donner un nom au conteneur
-p port_hôte:port_conteneur : Rendre un port accessible depuis l'hôte -p port_hôte:port_conteneur : rendre un port accessible depuis l'hôte
-d : Lancer le conteneur en mode 'détaché' -d : lancer le conteneur en mode 'détaché'
-it : Lancer le conteneur en mode intéractif avec tty -it : lancer le conteneur en mode intéractif avec tty
~~~ ~~~
Pour plus d'options, consulter `$ man docker run` #### Démarrer un conteneur existant
### Éteindre ou tuer un conteneur Un conteneur existant est un conteneur précédemment instancié avec `docker
run`.
~~~ ~~~
$ docker stop|kill [options] CONTENEUR $ docker start <ID ou nom du conteneur>
~~~ ~~~
CONTENEUR correspond au nom ou à l'ID du conteneur. #### Éteindre ou tuer un conteneur
~~~
$ docker stop|kill <ID ou nom du conteneur>
~~~
Lorsque le conteneur n'est plus en fonction, il existe toujours et peut être Lorsque le conteneur n'est plus en fonction, il existe toujours et peut être
lister à l'aide de la commande `$ docker ps -a` lister à l'aide de la commande `docker ps -a`
### Supprimer un conteneur ou une image #### Supprimer un conteneur
~~~ ~~~
$ docker rm [options] CONTENEUR $ docker rm <ID ou nom du conteneur>
ou
$ docker rmi [options] IMAGE
~~~ ~~~
### Exécuter des commandes au sein d'un conteneur en marche #### Exécuter des commandes dans un conteneur en fonction
~~~ ~~~
$ docker exec [options] CONTENEUR COMMANDE $ docker exec <ID ou nom du conteneur> <commande>
~~~ ~~~
Options courante: Options utiles :
~~~ ~~~
-it : Lancer la commande de manière intéractive dans un TTY. -t : alloue un TTY
-i : attache stdin (mode interractif)
~~~ ~~~
### Visionner les logs d'un conteneur On utilise habituellement la commande suivante pour obtenir un shell dans un conteneur en fonction :
~~~ ~~~
$ docker logs [options] CONTENEUR $ docker exec -ti <conteneur> bash
~~~ ~~~
Option: #### Visionner les journaux d'un conteneur
Il s'agit en fait de la sortie standard et la sortie d'erreur du processus
lancé à l'intérieur du conteneur :
~~~ ~~~
-f : Suivre les logs en direct $ docker logs <ID ou nom du conteneur>
~~~ ~~~
### Se connecter à un conteneur en marche Options utiles :
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 -f : suivre les logs en direct
-t : afficher un timestamp devant chaque ligne
~~~ ~~~
**ATTENTION!!!** #### Afficher les informations d'un conteneur
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 $ docker inspect <ID ou nom>
`--sig-proxy=false` lors du lancement ou de l'attachement. ~~~
Cette commande s'applique généralement à n'importe quel objet Docker
(conteneur, image, service, réseau…) et donne une liste exhaustive des
attributs de l'objet, formaté en JSON.
### Gérer les images
#### Lister les images locales
~~~
$ docker image ls
~~~
#### Construire une image
Pour construire ou mettre à jour une image :
~~~
$ docker build <repertoire>
~~~
Le répertoire doit contenir un fichier _Dockerfile_ décrivant l'image à
construire.
Option utiles :
~~~
-t : ajoute un tag à l'image
~~~
#### Ajouter un tag à une image existante
~~~
$ docker tag <tag actuel> <nouveau tag>
~~~
#### Pousser une image sur un dépôt distant
~~~
$ docker push <image>
~~~
Avant de pousser une image, il est nécessaire de lui attribuer le bon _tag_ qui
doit contenir l'adresse du dépôt distant.
Par exemple pour pousser l'image _foo-image_ sur le dépôt Docker _registry.example.net:5000_ :
~~~
$ docker tag foo-image registry.example.net:5000/foo-image
$ docker push registry.example.net:5000/foo-image
~~~
#### Récupérer une image d'un dépôt distant
~~~
$ docker pull <image>
~~~
### Astuces ### Astuces
Éteindre/Tuer/Supprimer tous les conteneurs:
Éteindre/Tuer/Supprimer tous les conteneurs :
~~~ ~~~
$ docker stop|kill|rm $(docker ps -aq) $ docker stop|kill|rm $(docker ps -aq)
~~~ ~~~
Supprimer toutes les images: Supprimer toutes les images :
~~~ ~~~
$ docker rmi $(docker images -q) $ docker rmi $(docker images -q)
~~~ ~~~
Lancer un terminal bash dans un conteneur en marche: Démarrer un conteneur avec un shell bash :
~~~
$ docker exec -it CONTENEUR bash
~~~
Démarrer un conteneur avec un terminal bash:
~~~ ~~~
$ docker run -it IMAGE bash $ docker run -it IMAGE bash