Voir aussi :

Fondements de la technologie Docker

Problèmes récurrents

  • Je n'ai plus d'espace disque, mon dossier /var est imposant.

–> Soit vous ne supprimez pas assez souvent (voir pas du tout) vos conteneurs. Les conteneurs ne sont pas faits pour stocker des informations. Ils doivent être utilisés pour fournir un environnement (un serveur, une application). Les données importantes (si il y en a) doivent être localisées en dehors du conteneur. Tous vos conteneurs finissent par prendre de la place, beaucoup de place, il faut donc les supprimer :

docker stop `docker ps -aq` # back quote AltGr + 7
docker rm `docker ps -aq`
# Pour info: docker ps -a liste en mode verbeux tout les conteneurs (lancés ou à l'arrêt), -q permet de ne voir s'afficher que les identifiants des conteneurs
Astuce: Utiliser l'option –rm dans la commande de lancement d'un conteneur, exemple avec l'image android-dev:
docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v ${HOME}/AndroidProjects:/home/android/AndroidProjects -v /dev/bus/usb:/dev/bus/usb --device=/dev/bus/usb:/dev/bus/usb:rwm -ti android-dev:latest

Cela permet de supprimer le conteneur dès que celui-ci est arrêté.

–> Soit vous avez trop d'images et de trop grande taille, il faut faire le ménage:

docker images # liste les images
docker rmi mon_image # supprime l'image mon_image (A NE PAS FAIRE SUR LES POSTES AIO DE SALLES DE TPS ==> UTILISER PLUTOT L'ALIAS _clean )

–> Dans le cas ou vous auriez quand même des données importantes dans un conteneur. Voici une méthode pour les pérenniser :

docker commit nom_conteneur nom_nouvelle_image # Permet de créer l'image nom_nouvelle_image
docker rm -f nom_conteneur # Supprime le conteneur avec les données sensibles
docker run -it nom_nouvelle_image /bin/bash # Lance un conteneur avec les données sensibles qui désormais persistent dans l'image nom_nouvelle_image
Attention, en cas de suppression de l'image nom_nouvelle_image :
# docker rmi nom_nouvelle_image

Vous perdez les données sensibles liées à l'image nom_nouvelle_image.

Comment faire pour ...

... récupérer de l'espace disque ?

Supprimer les images orphelines

À force de changements des Dockerfile, les processus de reconstruction d'image peuvent créer de nombreuses images dites orphelines (même si le terme ne convient pas, car elles ont des images parentes … Elles sont orphelines dans le sens où elle ne servent plus et sont donc à l'abandon). Les images orphelines sont des images qui ne sont pas identifiées (“<none>”) et qui ne sont parent d'aucune image (i.e.: ce ne sont pas des images intermédiaires). Pour les supprimer, il suffit d'exécuter la commande suivante :

docker rmi `docker images --quiet --filter dangling=true`
  • docker images liste les images qui ne sont pas des parents, lorsque celles-ci sont taguées (identifiées), elles correspondent à l'image finale qui servira à instancier le conteneur.
  • L'option –quiet permet de n'afficher que les identifiants des images
  • L'option –filter dangling=true permet de n'afficher que les images orphelines (dangling = ballant, qui pendouille)
  • `docker images –quiet –filter dangling=true` ou $(docker images –quiet –filter dangling=true) renvoie donc les identifiants des images orphelines
  • docker rmi supprime les images associées à ces identifiants
Ne soyez pas surpris si, pendant l’exécution de cette commande, vous voyez apparaître la suppression de beaucoup plus d'images que ce que vous pensiez. Il s'agit en fait de la destruction des images intermédiaires qui servaient à la construction de l'image orpheline que vous détruisez et qui du coup deviennent orphelines à leur tour.

Supprimer toutes les images

docker rmi `docker images -q`

Supprimer tous les conteneurs

docker rm [-f] `docker ps -aq`
  • docker ps liste les conteneurs actifs
  • L'option -a permet de lister tous les conteneurs
  • L'option -q permet de n'afficher que les identifiants des conteneurs
  • `docker ps -aq` ou $(docker ps -aq) renvoie donc les identifiants de tous les conteneurs
  • docker rm supprime les conteneurs associés à ces identifiants.
  • L'ajout de l'option -f permet de forcer la suppression du conteneur en toute circonstance
aide/docker.txt · Dernière modification: 12/09/2018 11:33 par Chantrein Jean-Mathieu
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0