Contenu

from Docker to Podman

Dans le cadre de la normalisation des containers , l'initiative Open Container Initiative OCI est née

from Docker to Podman

/images/blog/from-docker-to-podman/from-docker-to-podman.png
from Docker to Podman
Red Hat a décider de flaguer le package containerd.io sur sa distribution
Red Hat recommande l’utilisation de podman ainsi que les outils de containers buildah, skopeo, conmon, runc + … pour un environement de développement
En environement de Production, c’est pluôt le couple CRI-O + Kubernetes ❤️
/images/blog/from-docker-to-podman/docker_vs_podman.jpg
docker vs podman

pourquoi choisir podman ?

point faible docker

  • Docker centralise tous les containers sous le même processus containerd.io ==> SPOF
  • le processus containerd.io own l’ensemble des processus child (running container)
  • si containerd.io s'arrete / crash , tous les processus child sont perdus (voir ci-dessous)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
root       3758      1  0 19:01 ?        00:00:03 /usr/bin/containerd
root       5284   3758  0 19:07 ?        00:00:00  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/f1c32e4dafd41535a36bc7975a7ed5ae797e4ff3d3f98ef97daac1541eb8
root       5299   5284  0 19:07 ?        00:00:00  |   \_ sh
root       5342   3758  0 19:07 ?        00:00:00  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/a727d0643fb27e4785cf01e6336913caa19ffa876db0da339f81cb9039e0
root       5358   5342  0 19:07 ?        00:00:00  |   \_ sh
root       5521   3758  0 19:21 ?        00:00:00  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/a23e9508b6cc39701b4c250612395ee7dbbb75d22725fdf449387621fa22
root       5537   5521  2 19:21 ?        00:00:00  |   \_ sh
root       5616   3758  0 19:21 ?        00:00:00  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/0fbd9eb1bdd450b652946997b4c38e7bb28c3d488ca5a43d4a667103e720
root       5632   5616  6 19:21 ?        00:00:00      \_ sh
root       3760      1  0 19:01 ?        00:00:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  • Aussi un simple utilisateur exécute un container avec les privilèges root et un accès complet au système hôte (voir ci-dessous)
    /images/blog/from-docker-to-podman/root-user-docker.png
    simple user execute container as root
  • l'ensemble des images sont télécharger et stocker dans le même dossier /var/lib/docker/image/overlay2/imagedb/content/sha256 (voir ci-dessous)
    /images/blog/from-docker-to-podman/docker-images-storage-folder.png
    images centraliser dans le même dossier

podman : un puissant alternatif

  • podman + libpod : plus besoin de démarrer un daemon !
    interaction directe avec runC à travers conmon ✔️
    Tous les conteneurs sont exécutés par runC sans dépendre d’un processus unique
  • chaque utilisateur héberge ces images dans son home directory ~/.local/share/containers/storage/overlay-images
  • chaque container s'exécute sans privilège root
1
2
3
4
5
6
7
8
safa       1799      1  0 22:39 ?        00:00:00 podman
meriem     1863      1  0 22:39 ?        00:00:00 podman
safa       2166      1  0 22:45 ?        00:00:00 /usr/bin/fuse-overlayfs -o lowerdir=/home/safa/.local/share/containers/storage/overlay/l/C4TOYMAVKMZPRXIYE4Z5KSKXL5,upperd
safa       2176      1  0 22:45 ?        00:00:00 /usr/bin/conmon --api-version 1 -c 5822e92db504b85bd37033ca5f082847a0ba3346094a1e3f6cfb35381804a4c7 -u 5822e92db504b85bd37
safa       2186   2176  0 22:45 pts/0    00:00:00  \_ sh
meriem     2299      1  0 22:48 ?        00:00:00 /usr/bin/fuse-overlayfs -o lowerdir=/home/meriem/.local/share/containers/storage/overlay/l/4OAST6K6KVXIEIDDGUBW5SHOJT:/hom
meriem     2307      1  0 22:48 ?        00:00:00 /usr/bin/conmon --api-version 1 -c b5d1c7db6547e36f3c6d359b2df48c4869146008f9962d7ae45eab2f81604034 -u b5d1c7db6547e36f3c6
meriem     2317   2307  2 22:48 pts/0    00:00:00  \_ bash
  • podman accepte la création et l'exécution des Pods depuis (manifests YAML) Kubernetes
Podman + Kubernetes ❤️
Podman permet surtout une transition simple depuis l’environement de développement local vers l’environement de production Kubernetes Cluster CRI-O


à votre service ❤️
Si cet article vous a plu, je vous invite à contacter notre entreprise integrateur open source pour vous aider à mettre en place cette solution et la faire évoluer selon vos besoins.

Aussi, je vous invites à vous abonner à nos réseaux sociaux:

démo en vidéo

Et voici la vidéo résumant tout ce que je viens de vous dire 😉
à venir