Docker pour les devs - 03 - Docker Desktop, Engine et alternatives

Docker Desktop cache une VM Linux. Voici ce qu'il fait, ses alternatives (Colima, Podman, Rancher Desktop), et la question de la licence.

  1. 01 Docker pour les devs - 00 - Pourquoi Docker change tout
  2. 02 Docker pour les devs - 01 - Containers vs VMs
  3. 03 Docker pour les devs - 02 - L'architecture de Docker
  4. 04 Docker pour les devs - 03 - Docker Desktop, Engine et alternatives
  5. 05 Docker pour les devs - 04 - Écrire un Dockerfile
  6. 06 Docker pour les devs - 05 - Layers et cache
  7. 07 Docker pour les devs - 06 - Le .dockerignore
  8. 08 Docker pour les devs - 07 - Multi-stage builds
  9. 09 Docker pour les devs - 08 - Choisir son image de base
  10. 10 Docker pour les devs - 09 - Docker Compose, les bases
  11. 11 Docker pour les devs - 10 - Docker Compose avance
  12. 12 Docker pour les devs - 11 - Networking Docker, les bases
  13. 13 Docker pour les devs - 12 - Networking Docker avance
  14. 14 Docker pour les devs - 13 - Volumes et persistance
  15. 15 Docker pour les devs - 14 - Variables d'environnement et secrets
  16. 16 Docker pour les devs - 15 - Permissions et utilisateurs
  17. 17 Docker pour les devs - 16 - Docker et monorepo
  18. 18 Docker pour les devs - 17 - Dev vs Prod
  19. 19 Docker pour les devs - 18 - ENTRYPOINT, CMD et scripts d'initialisation
  20. 20 Docker pour les devs - 19 - Debugger ses conteneurs
  21. 21 Docker pour les devs - 20 - Bases de donnees dans Docker
  22. 22 Docker pour les devs - 21 - Sauvegardes et restauration
  23. 23 Docker pour les devs - 22 - Conteneuriser un frontend
  24. 24 Docker pour les devs - 23 - Sécurité des conteneurs
  25. 25 Docker pour les devs - 24 - Optimisation des images
  26. 26 Docker pour les devs - 25 - Builds multi-platform
  27. 27 Docker pour les devs - 26 - Limiter les ressources de tes conteneurs
  28. 28 Docker pour les devs - 27 - Gerer les logs comme un adulte
  29. 29 Docker pour les devs - 28 - Healthchecks et restart policies
  30. 30 Docker pour les devs - 29 - Nettoyer Docker avant qu'il mange ton disque
  31. 31 Docker pour les devs - 30 - Registries et stratégie de tags
  32. 32 Docker pour les devs - 31 - Docker en CI/CD
  33. 33 Docker pour les devs - 32 - Au-dela de Compose
  34. 34 Docker pour les devs - 33 - Glossaire Docker de A a Z

03 - Docker Desktop, Engine et alternatives

Ce que tu vas apprendre

  • Ce que Docker Desktop fait (et cache) sous le capot
  • La différence entre Docker Desktop et Docker Engine
  • Les alternatives : Colima, Podman, Rancher Desktop
  • Les implications de la licence Docker Desktop

Prerequisites


La surprise de la VM cachee

La première fois qu'un collegue m'a dit "Docker Desktop, c'est juste une VM Linux", j'ai cru qu'il exagerait. Et puis j'ai regarde l'Activity Monitor sur mon Mac. Un processus qemu-system-aarch64 mangeait 4 Go de RAM. C'etait la VM Linux que Docker Desktop lance en arriere-plan.

Sur Mac et Windows, les conteneurs ne tournent pas directement sur ton OS. Ils tournent dans une machine virtuelle Linux. Docker Desktop te cache cette complexité. C'est pratique, mais ca a un coût.

Docker Engine vs Docker Desktop

Docker Engine

Docker Engine, c'est le daemon (dockerd), containerd, runc, et le CLI. C'est le coeur de Docker. Sur Linux, tu peux l'installer directement :

bash# Installation sur Ubuntu
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Pas d'interface graphique, pas de VM, pas de surcouche. Le daemon tourne nativement sur le noyau Linux de ta machine. C'est la solution la plus legere et la plus performante.

Docker Engine est gratuit et open source.

Docker Desktop

Docker Desktop, c'est Docker Engine emballe dans une application de bureau pour Mac et Windows. Il inclut :

  • Une VM Linux (HyperKit sur ancien Mac, Apple Virtualization Framework sur M1+, Hyper-V ou WSL2 sur Windows)
  • Le Docker CLI
  • Docker Compose
  • Docker Scout (analyse de vulnérabilités)
  • Une interface graphique
  • Le partage de fichiers entre l'hote et la VM
  • La gestion des ressources (CPU, RAM alloues a la VM)
bash# Verifier ce que Docker Desktop utilise
docker info | grep "Operating System"
# Operating System: Docker Desktop

Le partage de fichiers entre ton Mac/Windows et la VM Linux est le point faible historique. Les volumes montes sont plus lents que sur Linux natif, surtout sur Mac. Docker a ameliore ca avec VirtioFS, mais le delta existe toujours.

La question de la licence

Depuis janvier 2022, Docker Desktop est payant pour les entreprises de plus de 250 employes ou 10 millions de dollars de chiffre d'affaires. Le prix va de 5 a 24 dollars par mois par utilisateur.

Pour un usage personnel, pour l'education, ou pour les petites entreprises, c'est gratuit.

Cette décision a pousse beaucoup de devs et d'entreprises a chercher des alternatives.

Colima : Docker sans Docker Desktop sur Mac

Colima (Containers on Lima) est une alternative open source pour macOS et Linux. Il lance une VM Lima avec Docker ou containerd a l'intérieur.

bash# Installation
brew install colima docker docker-compose

# Demarrage
colima start

# Avec des ressources specifiques
colima start --cpu 4 --memory 8 --disk 60

# Verification
docker ps

Colima utilise le meme Docker CLI. Tes commandes docker et docker compose fonctionnent de manière identique. La seule différence, c'est le backend qui gere la VM.

bash# Status de la VM
colima status

# Arreter
colima stop

# Supprimer
colima delete

Les avantages de Colima :

  • Gratuit et open source
  • Leger (pas d'interface graphique)
  • Supporte les Mac Apple Silicon nativement
  • Compatible avec le Docker CLI standard

L'inconvenient : la configuration initiale est manuelle. Pas d'interface graphique pour ajuster les ressources. Et les mises à jour ne sont pas automatiques.

Podman : le Docker sans daemon

Podman est l'alternative la plus radicale. Pas de daemon en arriere-plan. Chaque commande lance directement les conteneurs via conmon et runc.

bash# Installation sur Mac
brew install podman

# Initialiser la VM (necessaire sur Mac)
podman machine init
podman machine start

# Les commandes sont identiques a Docker
podman run -d -p 8080:80 nginx
podman ps
podman images

La compatibilité avec Docker est quasi-totale. Tu peux meme créer un alias :

bashalias docker=podman

La killer feature de Podman, c'est le mode rootless. Les conteneurs tournent sans privileges root, ce qui réduit la surface d'attaque. Docker supporte aussi le mode rootless maintenant, mais Podman l'a eu en premier et c'est le mode par défaut.

Podman gere aussi les pods, un concept venu de Kubernetes. Un pod regroupe plusieurs conteneurs qui partagent le meme réseau. Utile si tu travailles avec Kubernetes.

Rancher Desktop

Rancher Desktop est une autre alternative avec interface graphique. Il supporte Docker (via Moby) ou containerd comme backend.

bash# Apres installation, choisir le backend dans l'interface
# Puis utiliser normalement
docker ps
# ou
nerdctl ps  # si backend containerd

Il inclut aussi une distribution Kubernetes locale. Si tu as besoin de tester des déploiements k8s en local, c'est une option a considérer.

Comparaison

Docker Desktop Colima Podman Rancher Desktop
OS Mac, Windows, Linux Mac, Linux Mac, Windows, Linux Mac, Windows, Linux
Licence Payant (entreprise) MIT Apache 2.0 Apache 2.0
Interface GUI CLI CLI GUI
Backend Moby + VM Docker/containerd + Lima conmon + runc Moby/containerd
Daemon Oui Oui Non Oui
Rootless Supporte Supporte Par défaut Supporte
Docker Compose Inclus Via plugin Via podman-compose Inclus

Mon choix

Sur paltemps.fr, on utilise Colima sur Mac et Docker Engine natif sur les serveurs Linux. C'est le meilleur compromis entre simplicité, performance, et coût. Colima a eu quelques bugs au début, mais depuis la version 0.6, c'est solide.

Si tu es sur Linux, installe Docker Engine directement. Pas besoin de Docker Desktop, pas besoin d'alternative. C'est natif et c'est gratuit.

Si tu debutes et que tu veux un truc qui marche sans configuration, Docker Desktop reste le chemin le plus simple. Tu pourras migrer plus tard.

Installation rapide par plateforme

Linux (Ubuntu/Debian)

bashcurl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Deconnecte-toi et reconnecte-toi

Mac avec Colima

bashbrew install colima docker docker-compose
colima start --cpu 4 --memory 8

Windows avec WSL2

Installe Docker Desktop ou configure Docker Engine dans WSL2 :

bash# Dans ton terminal WSL2
curl -fsSL https://get.docker.com | sh
sudo service docker start

Résumé

  • Docker Desktop cache une VM Linux sur Mac et Windows
  • Docker Engine est le coeur open source, gratuit et natif sur Linux
  • Colima est la meilleure alternative gratuite sur Mac
  • Podman fonctionne sans daemon et est rootless par défaut
  • Docker Desktop est payant pour les grandes entreprises depuis 2022
  • Sur Linux, installe Docker Engine directement

Precedent : 02 - Architecture | Suivant : 04 - Dockerfile

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.