User Tools

Site Tools


informatique:logiciels:docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:docker [2024/09/17 16:00] pteuinformatique:logiciels:docker [2025/10/17 09:57] (current) – overlay2 prend trop de place pteu
Line 70: Line 70:
 Action sur les conteneurs Action sur les conteneurs
 <code bash> <code bash>
-# démarrer arrêter un conteneur 
-docker start alpine 
-docker stop alpine 
- 
-# supprimer un conteneur (-f pour forcer même s'il est en fonctionnement) 
-docker rm (-f) <conteneur1> 
- 
 # lister les conteneurs # lister les conteneurs
 docker ps docker ps
 docker container ls docker container ls
- 
 # pour lister aussi les conteneurs arrêtés # pour lister aussi les conteneurs arrêtés
 docker ps -a docker ps -a
 CONTAINER ID   IMAGE         COMMAND    CREATED        STATUS                    PORTS     NAMES CONTAINER ID   IMAGE         COMMAND    CREATED        STATUS                    PORTS     NAMES
 f8b7c15f443f   hello-world   "/hello"   8 months ago   Exited (0) 8 months ago             frosty_napier f8b7c15f443f   hello-world   "/hello"   8 months ago   Exited (0) 8 months ago             frosty_napier
 +
 +# démarrer arrêter un conteneur
 +docker start alpine
 +docker stop alpine
 +
 +# supprimer un conteneur (-f pour forcer même s'il est en fonctionnement)
 +docker rm (-f) <conteneur1>
 +
 +# supprimer les conteneurs non utilisés
 +docker container prune
 </code> </code>
  
Line 90: Line 92:
 =====Images===== =====Images=====
  
-Ce sont des "pré-conteneurs" à instancier (personnaliser) et installer ; leur nommage est de type : ''image:version''.+Ce sont des "pré-conteneurs" à instancier (personnaliser) et installer ; leur nommage est de type : ''image:version''. On peut les télécharger depuis un repository, celui par défaut est le [[https://hub.docker.com/|docker hub]].
  
 <code bash> <code bash>
 # lister les images # lister les images
 docker images docker images
-#(ou docker image ls)+#(ou "docker image ls")
  
 # télécharger une image # télécharger une image
 docker pull pihole docker pull pihole
 +
 +# supprimer les images inutilisées
 +docker image prune
  
 # créer image à partir d'un conteneur # créer image à partir d'un conteneur
Line 106: Line 111:
 docker history <ID_image> docker history <ID_image>
 </code> </code>
 +
  
 =====Registres (d'images)===== =====Registres (d'images)=====
  
 Les "registry" sont des bases d'images Docker ; le "registre officiel" est le [[https://hub.docker.com/|Docker Hub]] mais il en existe moult ([[https://github.com/linuxserver|LinuxServer.io]] par exemple). Les "registry" sont des bases d'images Docker ; le "registre officiel" est le [[https://hub.docker.com/|Docker Hub]] mais il en existe moult ([[https://github.com/linuxserver|LinuxServer.io]] par exemple).
 +
  
 =====Build===== =====Build=====
Line 132: Line 139:
 # lister les réseaux (loopback) créés dans docker # lister les réseaux (loopback) créés dans docker
 docker network ls docker network ls
 +</code>
 +
 +Dans un docker compose, créer un réseau bridgé dont on maitrise l'adressage:
 +<code yaml>
 +networks:
 +  br-1:
 +    name: pont1
 +    driver: bridge
 +      ipam:
 +        config:
 +          - subnet: 172.17.17.0/24
 +            gateway: 172.17.17.254
 +[..]
 +services:
 +  myalpine:
 +    image: alpine
 +    container_name: myalpine
 +    command: sh
 +    network:
 +      - br-1
 +        name: pont1
 +        #external: true    # uniquement si le réseau a déjà été créé en dehors compose
 +        ipv4_address: 172.17.17.10
 +</code>
 +
 +Pour faire communiquer (basiquement) 2 réseaux docker il faut manipuler l'iptables du host :
 +<code bash>
 +iptables -I DOCKER-USER -i br-1 -o br-2 -j ACCEPT
 +iptables -I DOCKER-USER -i br-2 -o br-2 -j ACCEPT
 </code> </code>
  
  
 =====Volumes===== =====Volumes=====
 +
 +Permet de faire persister les données entre plusieurs lancements de conteneurs, en montant un volume sur le système de fichier de la machine hôte.
  
 <code bash> <code bash>
-docker volume ls +docker volume ls (-a) 
-docker volume create monvolume +docker volume create <monvolume> 
-docker volume rm monvolume+docker volume rm <monvolume
 +docker volume prune
 </code> </code>
  
 =====Compose===== =====Compose=====
  
-docker compose: permet de créer et ordonnancer de multiples conteneurs pour monter un service (site web + BDD + etc) ; il utilise des fichiers yml pour définir le service+docker compose: permet de créer et ordonnancer de multiples conteneurs pour monter un "service(site web + BDD + etc) ; il utilise des fichiers yml pour définir le service
  
 <code bash> <code bash>
 +docker compose version
 +
 +docker compose build
 +
 # https://docs.docker.com/compose/gettingstarted/ # https://docs.docker.com/compose/gettingstarted/
 mkdir nextcloud && cd nextcloud mkdir nextcloud && cd nextcloud
Line 156: Line 199:
 # afficher les logs # afficher les logs
 docker-compose logs -f docker-compose logs -f
-# arrêter le conteneur +# arrêter les conteneurs (-v pour supprimer les volumes également) 
-docker-compose down+docker-compose down (-v)
 ! !
 docker compose pull ? docker compose pull ?
Line 230: Line 273:
 </code> </code>
  
 +=====Portainer=====
 +
 +[[https://www.portainer.io/|Portainer]] est une webUI pour docker ; il permet de gérer le moteur via le navigateur.
 +
 +Les confs (notamment les docker-compose à sauvegarder) se trouvent dans : ''/var/lib/docker/volumes/portainer_data/''
 +
 +Alternative: [[https://github.com/louislam/dockge|Dockge]]
 =====Documentations===== =====Documentations=====
  
Line 244: Line 294:
   * https://github.com/wagoodman/dive   * https://github.com/wagoodman/dive
  
 +=====Tips=====
 +
 +====overlay2 prend trop de place====
 +
 +Docker a tendance à prendre de la place, certains conteneurs notamment remplissent le système de fichier et saturent le dossier 
 +
 +<code bash>
 +df -h | grep -E /$
 +/dev/sda2           20G     19G     0 100% /
 +</code>
 +
 +On peut commencer par supprimer tous les objets inutilisés, en faisant attention c'est une manipulation destructrice :
 +<code bash>
 +docker system prune
 +WARNING! This will remove:
 +  - all stopped containers
 +  - all networks not used by at least one container
 +  - all dangling images
 +  - unused build cache
 +
 +Are you sure you want to continue? [y/N]
 +</code>
 +
 +Dans mon cas cela fait gagner un peu de place, mais le soucis principal vient d'ailleurs :
 +<code bash>
 +du -hs /var/lib/docker/*
 +116K    /var/lib/docker/buildkit
 +248K    /var/lib/docker/containers
 +4,0K    /var/lib/docker/engine-id
 +2,6M    /var/lib/docker/image
 +88K     /var/lib/docker/network
 +23G     /var/lib/docker/overlay2   <---- là !
 +16K     /var/lib/docker/plugins
 +4,0K    /var/lib/docker/runtimes
 +4,0K    /var/lib/docker/swarm
 +4,0K    /var/lib/docker/tmp
 +1,3M    /var/lib/docker/volumes
 +</code>
 +
 +Oui, il fallait faire une partition dédiée pour ''/var'' !
 +
 +<code bash>
 +docker system df
 +TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
 +Images          2                 1.198GB   0B (0%)
 +Containers      2                 11GB      0B (0%)
 +Local Volumes                   1.227MB   963.1kB (78%)
 +Build Cache                     0B        0B
 +
 +docker system df -v
 +[...]
 +Images space usage:
 +
 +REPOSITORY                      TAG         IMAGE ID       CREATED         SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS
 +bbernhard/signal-cli-rest-api   0.167-dev   3a4e0da41196   13 months ago   897MB     0B            897.5MB       1
 +portainer/portainer-ce          2.21.1      9c0b5a6a7e4d   13 months ago   301MB     0B            300.8MB       1
 +
 +Containers space usage:
 +
 +CONTAINER ID   IMAGE                                     COMMAND            LOCAL VOLUMES   SIZE      CREATED         STATUS                NAMES
 +3d15115fdf6f   bbernhard/signal-cli-rest-api:0.167-dev   "/entrypoint.sh"                 11GB      5 weeks ago     Up 8 days (healthy)   signal-cli-rest-api
 +b94dc74fe700   portainer/portainer-ce:2.21.1             "/portainer"                     0B        13 months ago   Up 8 days             portainer
 +</code>
 +
 +11G c'est trop ;
 +<code bash>
 +docker stop 3d15115fdf6f
 +docker rm -f 3d15115fdf6f
 +df -h | grep -E /$
 +/dev/sda2           20G    7,9G   11G  44% /
 +
 +# et le recréer:
 +cd /bla/tools/docker/apps
 +docker compose up -d
 +</code>
  
  
informatique/logiciels/docker.1726588809.txt.gz · Last modified: 2024/09/17 16:00 by pteu