informatique:logiciels:docker
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| informatique:logiciels:docker [2024/08/19 11:23] – created pteu | informatique:logiciels:docker [2025/10/17 09:57] (current) – overlay2 prend trop de place pteu | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ======Docker====== | ======Docker====== | ||
| - | Ceci est un pense-bête en vrac. Il peut contenir des erreurs. | + | {{ : |
| + | |||
| + | Docker est un outil permettant de faire tourner une application et ses dépendances dans un conteneur isolé, en s' | ||
| + | |||
| + | //Ceci est un pense-bête en vrac. Il peut contenir des erreurs.// | ||
| =====Installation===== | =====Installation===== | ||
| Line 9: | Line 13: | ||
| * [[https:// | * [[https:// | ||
| - | =====Documentations===== | ||
| - | |||
| - | * https:// | ||
| - | * https:// | ||
| - | |||
| - | Vidéos: | ||
| - | * https:// | ||
| - | * https:// | ||
| - | * https:// | ||
| - | * https:// | ||
| =====Généralités===== | =====Généralités===== | ||
| - | Il faut être root pour utiliser docker. | + | Il faut être root pour utiliser docker |
| - | <code bash> | + | |
| - | # afficher | + | |
| - | docker inspect bridge | + | |
| - | # afficher la conf d'un conteneur | + | |
| - | docker | + | |
| - | # n' | + | |
| - | docker inspect -f " | + | |
| - | </code> | + | |
| - | + | ||
| - | =====B.-A.-BA===== | + | |
| Vérification de la version : | Vérification de la version : | ||
| Line 72: | Line 56: | ||
| =====Conteneurs===== | =====Conteneurs===== | ||
| + | |||
| + | Un conteneur est l' | ||
| Création d'un conteneur Alpine Linux (Linux minimaliste) | Création d'un conteneur Alpine Linux (Linux minimaliste) | ||
| Line 84: | Line 70: | ||
| Action sur les conteneurs | Action sur les conteneurs | ||
| <code bash> | <code bash> | ||
| + | # lister les conteneurs | ||
| + | docker ps | ||
| + | docker container ls | ||
| + | # pour lister aussi les conteneurs arrêtés | ||
| + | docker ps -a | ||
| + | CONTAINER ID | ||
| + | f8b7c15f443f | ||
| + | |||
| # démarrer arrêter un conteneur | # démarrer arrêter un conteneur | ||
| docker start alpine | docker start alpine | ||
| docker stop alpine | docker stop alpine | ||
| - | # suppr un conteneur | + | # supprimer |
| - | docker rm (-f) < | + | docker rm (-f) < |
| - | # lister | + | # supprimer |
| - | docker ps # (ou docker container | + | docker container |
| - | + | ||
| - | # pour lister aussi les conteneurs arrêtés | + | |
| - | docker ps -a | + | |
| </ | </ | ||
| - | =====Volumes===== | ||
| - | <code bash> | + | =====Images===== |
| - | docker volume ls | + | |
| - | docker volume create monvolume | + | |
| - | docker volume rm monvolume | + | |
| - | </ | + | |
| - | ===== Gestion | + | Ce sont des " |
| <code bash> | <code bash> | ||
| - | # afficher | + | # lister |
| - | # -f/--follow ; -t/ | + | docker |
| - | docker | + | #(ou "docker |
| - | docker logs -f -t --details < | + | |
| - | # filtrer les logs sur un créneau horaire | + | |
| - | docker | + | |
| - | docker logs -t --since 1h30m --details < | + | |
| - | # par def, les logs des conteneurs sont dans / | + | |
| - | # supprimer les logs d'un conteneur : | + | |
| - | : > $(docker inspect --format=' | + | |
| - | </ | + | |
| - | =====Images===== | + | # télécharger une image |
| + | docker pull pihole | ||
| + | |||
| + | # supprimer les images inutilisées | ||
| + | docker image prune | ||
| - | <code bash> | ||
| - | # lister les images | ||
| - | docker images | ||
| - | (ou docker image ls) | ||
| # créer image à partir d'un conteneur | # créer image à partir d'un conteneur | ||
| docker commit -m "hello image v1" < | docker commit -m "hello image v1" < | ||
| - | docker history < | + | |
| + | # afficher l' | ||
| + | docker history < | ||
| </ | </ | ||
| + | |||
| + | |||
| + | =====Registres (d' | ||
| + | |||
| + | Les " | ||
| + | |||
| =====Build===== | =====Build===== | ||
| Line 146: | Line 132: | ||
| </ | </ | ||
| - | =====network===== | + | =====Network===== |
| + | |||
| + | Les réseaux docker sont des bridges créés sur le système pour isoler les conteneurs, l' | ||
| <code bash> | <code bash> | ||
| # lister les réseaux (loopback) créés dans docker | # lister les réseaux (loopback) créés dans docker | ||
| docker network ls | docker network ls | ||
| + | </ | ||
| + | |||
| + | Dans un docker compose, créer un réseau bridgé dont on maitrise l' | ||
| + | <code yaml> | ||
| + | networks: | ||
| + | br-1: | ||
| + | name: pont1 | ||
| + | driver: bridge | ||
| + | ipam: | ||
| + | config: | ||
| + | - subnet: 172.17.17.0/ | ||
| + | gateway: 172.17.17.254 | ||
| + | [..] | ||
| + | services: | ||
| + | myalpine: | ||
| + | image: alpine | ||
| + | container_name: | ||
| + | command: sh | ||
| + | network: | ||
| + | - br-1 | ||
| + | name: pont1 | ||
| + | #external: true # uniquement si le réseau a déjà été créé en dehors compose | ||
| + | ipv4_address: | ||
| + | </ | ||
| + | |||
| + | Pour faire communiquer (basiquement) 2 réseaux docker il faut manipuler l' | ||
| + | <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 | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====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> | ||
| + | docker volume ls (-a) | ||
| + | docker volume create < | ||
| + | docker volume rm < | ||
| + | docker volume prune | ||
| </ | </ | ||
| =====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" |
| <code bash> | <code bash> | ||
| + | docker compose version | ||
| + | |||
| + | docker compose build | ||
| + | |||
| # https:// | # https:// | ||
| mkdir nextcloud && cd nextcloud | mkdir nextcloud && cd nextcloud | ||
| Line 166: | Line 199: | ||
| # afficher les logs | # afficher les logs | ||
| docker-compose logs -f | docker-compose logs -f | ||
| - | # arrêter | + | # arrêter |
| - | docker-compose down | + | docker-compose down (-v) |
| ! | ! | ||
| docker compose pull ? | docker compose pull ? | ||
| + | </ | ||
| + | |||
| + | Mettre à jour un conteneur existant (exemple avec technitium/ | ||
| + | <code bash> | ||
| + | docker compose down | ||
| + | docker image rm technitium/ | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | ===== Gestion des logs===== | ||
| + | |||
| + | <code bash> | ||
| + | # afficher les logs d'un conteneur: | ||
| + | # -f/--follow ; -t/ | ||
| + | docker container logs --follow <ID> | ||
| + | docker logs -f -t --details < | ||
| + | # filtrer les logs sur un créneau horaire (ici affiche les logs du 11 mars) | ||
| + | docker logs -t --since 2023-03-11 --until 2023-03-12 --details < | ||
| + | docker logs -t --since 1h30m --details < | ||
| + | # par def, les logs des conteneurs sont dans / | ||
| + | # supprimer les logs d'un conteneur : | ||
| + | : > $(docker inspect --format=' | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====Divers===== | ||
| + | |||
| + | <code bash> | ||
| + | # afficher l' | ||
| + | docker inspect bridge | ||
| + | # afficher la conf d'un conteneur | ||
| + | docker inspect pihole | ||
| + | # n' | ||
| + | docker inspect -f " | ||
| + | |||
| + | |||
| + | # effacer les données inutilisées par docker (comme les vieilles images par ex) | ||
| + | docker system prune | ||
| </ | </ | ||
| Line 203: | Line 273: | ||
| </ | </ | ||
| - | =====Divers===== | + | =====Portainer===== |
| + | |||
| + | [[https:// | ||
| + | |||
| + | Les confs (notamment les docker-compose à sauvegarder) se trouvent dans : ''/ | ||
| + | |||
| + | Alternative: | ||
| + | =====Documentations===== | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Vidéos: | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| Outils liés à docker: | Outils liés à docker: | ||
| * https:// | * https:// | ||
| + | =====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 /$ | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | On peut commencer par supprimer tous les objets inutilisés, | ||
| + | <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] | ||
| + | </ | ||
| + | |||
| + | Dans mon cas cela fait gagner un peu de place, mais le soucis principal vient d' | ||
| + | <code bash> | ||
| + | du -hs / | ||
| + | 116K / | ||
| + | 248K / | ||
| + | 4,0K / | ||
| + | 2,6M / | ||
| + | 88K / | ||
| + | 23G / | ||
| + | 16K / | ||
| + | 4,0K / | ||
| + | 4,0K / | ||
| + | 4,0K / | ||
| + | 1,3M / | ||
| + | </ | ||
| + | |||
| + | Oui, il fallait faire une partition dédiée pour ''/ | ||
| + | |||
| + | <code bash> | ||
| + | docker system df | ||
| + | TYPE TOTAL | ||
| + | Images | ||
| + | Containers | ||
| + | Local Volumes | ||
| + | Build Cache | ||
| + | |||
| + | docker system df -v | ||
| + | [...] | ||
| + | Images space usage: | ||
| + | |||
| + | REPOSITORY | ||
| + | bbernhard/ | ||
| + | portainer/ | ||
| + | |||
| + | Containers space usage: | ||
| + | |||
| + | CONTAINER ID | ||
| + | 3d15115fdf6f | ||
| + | b94dc74fe700 | ||
| + | </ | ||
| + | |||
| + | 11G c'est trop ; | ||
| + | <code bash> | ||
| + | docker stop 3d15115fdf6f | ||
| + | docker rm -f 3d15115fdf6f | ||
| + | df -h | grep -E /$ | ||
| + | / | ||
| + | |||
| + | # et le recréer: | ||
| + | cd / | ||
| + | docker compose up -d | ||
| + | </ | ||
informatique/logiciels/docker.1724066631.txt.gz · Last modified: 2024/08/19 11:23 by pteu