HowtoDocker : amélioration/réorganisation de la partie utilisation de base
This commit is contained in:
parent
4fa90cd295
commit
f8d058ebfd
182
HowtoDocker.md
182
HowtoDocker.md
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue