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
|
||||
---
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue