Aller au contenu principal

Les instances et le cycle de vie

Les instances et le cycle de vie

Objectifs pédagogiques

  • Savoir utiliser les commandes pull, stop/start, kill, stats, delete, prune

Docker pull et chercher sur Docker Hub

  • Visitez hub.docker.com
  • Cherchez l'image de Nginx (un serveur web), et téléchargez la dernière version (pull).
docker pull nginx

Que se passe-t-il ?

La commande run fait appel à docker pull si l'image n'est pas présente.


Docker stop/start : stopper et redémarrer un conteneur

docker stop <nom_ou_id_conteneur> # ne détruit pas le conteneur
docker start <nom_ou_id_conteneur> # le conteneur a déjà été créé
docker start --attach <nom_ou_id_conteneur> # lance le conteneur et s'attache à la sortie standard

On peut désigner un conteneur soit par le nom qu'on lui a donné, soit par le nom généré automatiquement, soit par son empreinte (toutes ces informations sont indiquées dans un docker ps ou docker ps -a).

Essayez de stopper et redémarrer le conteneur "mycontainer".


Docker kill : conteneurs récalcitrants

$ docker run --rm -d --name sleep ubuntu sleep 3600 

Essayez de stopper ce conteneur. Que se passe-t-il ?

docker kill <conteneur>

Docker stats : conteneurs et consommation

Il est temps de faire un petit docker stats pour découvrir l'utilisation du CPU et de la RAM de vos conteneurs !

$ docker stats

Ctrl+c pour quitter

$ docker stats mycontainer 

Docker delete : Faire du ménage

Lancez la commande

$ docker ps -aq -f status=exited

Que fait-elle ?

S'il y a encore des conteneurs qui tournent, supprimez un des conteneurs restants

$ docker rm <id_ou_nom>

Avancé : combinez docker rm et la commande ps précédente


Docker prune : Faire du ménage automatiquement

La commande prune supprimme automatiquement tous les conteneurs dans l'état STOPPED.

$ docker container prune

Note: on voit que la plupart des commandes qu'on a exécuté sont en fait dépendantes d'une ressource "container" dans la ligne de commande docker.

$ docker container ps
$ docker container run
... etc

Avancé : L'option restart=always

$ docker run -d --name redis --restart=always redis --bad-flag 

Que se passe-t-il quand vous faites la liste des conteneurs ? Stopper le conteneur.

$ docker run -d --name redis --restart=always redis
$ docker exec -it redis bash -c "kill 1"
$ docker ps

Que se passe-t-il ?

Plus d'infos sur https://docs.docker.com/engine/reference/run/#restart-policies-


Avancé : Docker export / décortiquer un conteneur

En utilisant la commande suivante

$ docker export votre_conteneur -o /tmp/conteneur.tar

puis

$ cd /tmp; tar -C conteneur_decompresse -xvf conteneur.tar

pour décompresser un conteneur Docker, explorez (avec l'explorateur de fichiers par exemple) jusqu'à trouver l'exécutable principal contenu dans le conteneur.