technique:docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:docker [2023/12/22 12:24] – [Network] guillaumevtechnique:docker [2024/03/06 15:52] francoisa
Ligne 1: Ligne 1:
-====== Virtualisation avec Docker ======+====== Conteneurisation avec Docker ======
  
 Docker est un système de virtualisation proche du sysème hote (s'il est similaire). Il permet de partager des ressources et de moins solliciter le système. Docker est un système de virtualisation proche du sysème hote (s'il est similaire). Il permet de partager des ressources et de moins solliciter le système.
Ligne 12: Ligne 12:
   * Docker dans LXC : [[https://du.nkel.dev/blog/2021-03-25_proxmox_docker/|https://du.nkel.dev/blog/2021-03-25_proxmox_docker/]]   * Docker dans LXC : [[https://du.nkel.dev/blog/2021-03-25_proxmox_docker/|https://du.nkel.dev/blog/2021-03-25_proxmox_docker/]]
   * chaine Xavki sur docker (+docker-compose pas loin) [[https://yewtu.be/playlist?list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd|https://yewtu.be/playlist?list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd]]   * chaine Xavki sur docker (+docker-compose pas loin) [[https://yewtu.be/playlist?list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd|https://yewtu.be/playlist?list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd]]
 +  * serie d'articles : [[https://blog.microlinux.fr/formation-docker/|https://blog.microlinux.fr/formation-docker/]]
 +
 +===== Schéma conteneur et virtualisation =====
 +
 +{{.:image-29-1024x548.png?400}}
 +
 +=====   =====
  
 ===== Installation ===== ===== Installation =====
Ligne 32: Ligne 39:
  
 </code> </code>
 +
 +Install de docker via ansible dans le role setup_machine : [[https://gitlab.cemea.org/cemeasi/ansible-cemea/-/blob/master/roles/setup_machine/tasks/main.yml?ref_type=heads#L73-116|https://gitlab.cemea.org/cemeasi/ansible-cemea/-/blob/master/roles/setup_machine/tasks/main.yml?ref_type=heads#L73-116]]
  
 ===== Principe de fonctionnement ===== ===== Principe de fonctionnement =====
Ligne 164: Ligne 173:
   * **USER**  : Désigne quel est l'utilisateur qui lancera les prochaines instructions   * **USER**  : Désigne quel est l'utilisateur qui lancera les prochaines instructions
 RUN , CMD ou ENTRYPOINT (par défaut c'est l'utilisateur root). RUN , CMD ou ENTRYPOINT (par défaut c'est l'utilisateur root).
 +
 +Un outil pour explorer les couches d'une image Docker : [[https://github.com/wagoodman/dive|https://github.com/wagoodman/dive]]
  
 ===== Les volumes ===== ===== Les volumes =====
Ligne 210: Ligne 221:
  
 ''docker network rm test''  : effacer un réseau ''docker network rm test''  : effacer un réseau
- 
  
 ===== log via journald ===== ===== log via journald =====
  
-Actifs sur toutes nos machines. Pour que les logs docker arrivent dans journald, ce qui permet une persistence, ainsi que tous les outils pratiques de filtrage de journald, il faut configurer le logging-driver dans ''/etc/docker/daemon.json'' :+Actifs sur toutes nos machines. Pour que les logs docker arrivent dans journald, ce qui permet une persistence, ainsi que tous les outils pratiques de filtrage de journald, il faut configurer le logging-driver dans ''/etc/docker/daemon.json''  :
 <code> <code>
 +
 { {
   "log-driver": "journald"   "log-driver": "journald"
 } }
 +
 </code> </code>
  
 Ensuite, si on veut filtrer, plusieurs options : Ensuite, si on veut filtrer, plusieurs options :
 +
   * sur le nom du conteneur : ''journalctl CONTAINER_NAME=scribe-scribe-1''   * sur le nom du conteneur : ''journalctl CONTAINER_NAME=scribe-scribe-1''
   * sur l'ID court de conteneur : ''journalctl CONTAINER_ID=f541054ab4e7''   * sur l'ID court de conteneur : ''journalctl CONTAINER_ID=f541054ab4e7''
  
-Plus d'infos ici : https://docs.docker.com/config/containers/logging/journald/+Plus d'infos ici : [[https://docs.docker.com/config/containers/logging/journald/|https://docs.docker.com/config/containers/logging/journald/]]
  
 On peut bien sur combiner avec d'autres filtres : On peut bien sur combiner avec d'autres filtres :
 <code> <code>
 +
 journalctl CONTAINER_NAME=scribe-scribe-1 -b -1 # Pour le dernier boot uniquement journalctl CONTAINER_NAME=scribe-scribe-1 -b -1 # Pour le dernier boot uniquement
 journalctl CONTAINER_NAME=scribe-scribe-1 --since yesterday # Pour les logs depuis hier journalctl CONTAINER_NAME=scribe-scribe-1 --since yesterday # Pour les logs depuis hier
 journalctl CONTAINER_NAME=scribe-scribe-1 CONTAINER_NAME=scribe-dmp-server-1 #Pour avoir les logs de plusieurs containers d'un coup journalctl CONTAINER_NAME=scribe-scribe-1 CONTAINER_NAME=scribe-dmp-server-1 #Pour avoir les logs de plusieurs containers d'un coup
 +
 </code> </code>
 +=== Cas particulier sous PVE ===
 +
 +Penser à activer le keyctl=1 pour docker
 +
 +En cas de disque saturé, docker peut renvoyer des trucs bizarres sur des fichiers qu'il croit encore existants :
 +
 +<code>
 +systemctl stop docker && rm -Rf /var/lib/docker/image/vfs && rm -Rf /var/lib/docker/vfs && systemctl start docker
 +
 +</code>
 +
 +Et patienter avant de relancer un build...
 +
 +===== Purge =====
 +
 +Les usages mutliples de docker génèrent des fichiers liés au volume, au réseau au cache. Ce qui représente à la longue un espace conséquent dans /var/lib/docker (20 Go chez moi).
 +
 +Un nettoyage complet peut s'effectuer avec :
 +
 +<code>
 +docker system prune -a # suppresion des images, conteneur, réseau, volumes, cache...
 +
 +</code>
 +
 +Et hop : réduction à 40 Mo !
  
 ====== Docker-compose ====== ====== Docker-compose ======
  • technique/docker.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1