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
---
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 est une solution qui permet de créer, déployer et gérer des conteneurs
Linux.
Documentation : <https://docs.docker.com/engine/installation/linux/docker-ce/debian/#install-docker-ce-1>
Docker-Compose : [HowtoDockerCompose]()
Documentation : <https://docs.docker.com/>
# Docker Engine
## Installation
Il est conseillé d'utiliser le paquet docker-ce des dépôts du projet Docker :
~~~
# apt install apt-transport-https
# 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 update
> # 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
#### Changer le chemin de stockage
@ -75,123 +80,178 @@ Les fichiers seront créés, par défaut, dans le répertoire
## 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)
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
-l : Lister les conteneurs récentralise
-q : Lister uniquement les ID des conteneurs
-a : lister tous les conteneurs
-l : lister les conteneurs récemment lancés
-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
-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
--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`
#### 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
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
ou
$ docker rmi [options] IMAGE
$ docker rm <ID ou nom du conteneur>
~~~
### 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
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`.
Options utiles :
~~~
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
`--sig-proxy=false` lors du lancement ou de l'attachement.
~~~
$ docker inspect <ID ou nom>
~~~
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
Éteindre/Tuer/Supprimer tous les conteneurs:
Éteindre/Tuer/Supprimer tous les conteneurs :
~~~
$ docker stop|kill|rm $(docker ps -aq)
~~~
Supprimer toutes les images:
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:
Démarrer un conteneur avec un shell bash :
~~~
$ docker run -it IMAGE bash