12k
All articles

5 alternatives à Docker pour le développement local

Comparez cinq alternatives à Docker Desktop pour le développement local : Podman, OrbStack, Colima, Rancher Desktop et Lima. Vérifiez les systèmes, coûts et compatibilités Docker et Compose.

OpenReplay Team
OpenReplay Team
5 alternatives à Docker pour le développement local

Les cinq alternatives à Docker Desktop qui méritent d’être testées pour le développement local sont Podman avec Podman Desktop, OrbStack, Colima, Rancher Desktop et Lima avec nerdctl. Seules certaines d’entre elles conservent le véritable Docker Engine derrière vos commandes docker.

Peut-être que vos ventilateurs s’emballent dès que le conteneur Postgres démarre. Peut-être que quelqu’un du service financier vous a demandé combien de licences Docker Desktop l’entreprise paie. Dans un cas comme dans l’autre, vous voulez savoir quelle solution de remplacement exécutera toujours vos scripts docker run et votre fichier Compose.

Ce comparatif passe sur les notions de base concernant les images et les conteneurs, traitées dans le guide du débutant sur les images et conteneurs Docker. Chaque outil ci-dessous est évalué selon les mêmes critères : systèmes d’exploitation, coût, moteur, compatibilité avec la CLI docker, compatibilité avec Compose, profil d’utilisateur ciblé, et commandes pour l’installer et lancer un premier conteneur.

Points clés à retenir

  • Docker Desktop est gratuit pour les entreprises de moins de 250 salariés réalisant moins de 10 millions de dollars de chiffre d’affaires annuel. Les entreprises plus importantes doivent souscrire un abonnement payant Pro, Team ou Business.
  • OrbStack et Colima (dans son mode par défaut) exécutent Docker Engine dans une VM plus légère. Podman et containerd avec nerdctl remplacent entièrement le moteur.
  • Sur macOS et Windows, tous les outils de ce comparatif exécutent toujours les conteneurs Linux dans une machine virtuelle.
  • podman compose existe, mais délègue le travail à un fournisseur externe (docker-compose ou podman-compose), dont l’un des deux doit être installé.
  • Si docker cesse de fonctionner après un changement d’outil, lancez docker context ls pour voir vers quel point de terminaison de moteur la CLI est dirigée.

Pourquoi les développeurs cherchent-ils des alternatives à Docker en local ?

Les développeurs abandonnent généralement Docker Desktop pour l’une de ces trois raisons : la licence, la consommation de ressources ou la vitesse de partage de fichiers sur macOS.

  • Licence. Selon les conditions de licence de Docker Desktop, l’application est gratuite pour un usage personnel, éducatif, open source non commercial, ainsi que pour les entreprises de moins de 250 salariés réalisant moins de 10 millions de dollars de chiffre d’affaires annuel. Une entreprise qui dépasse l’un ou l’autre de ces seuils doit souscrire un abonnement payant Pro, Team ou Business.
  • Mémoire et batterie. Sur macOS et Windows, Docker Desktop fait tourner sa VM Linux tant qu’un conteneur est actif, et cette VM consomme de la mémoire et de l’énergie même lorsque les conteneurs sont inactifs. Le mode Resource Saver de Docker Desktop n’arrête la VM qu’après une certaine période sans aucun conteneur en cours d’exécution (cinq minutes par défaut).
  • Bind mounts. Sur macOS, les fichiers montés depuis l’hôte dans un conteneur doivent franchir la frontière de la VM. La documentation de Docker elle-même indique que les bind mounts peuvent ralentir à mesure que la base de code grossit, ce qui explique l’ajout des partages de fichiers synchronisés dans Docker Desktop. C’est avec les arborescences node_modules volumineuses et les observateurs de fichiers (file watchers) que le ralentissement se fait sentir.

Que remplace réellement chaque alternative à Docker ?

Docker Desktop est une application de bureau qui regroupe une machine virtuelle Linux, Docker Engine et une interface graphique. Remplacer Docker Desktop ne signifie pas remplacer Docker Engine. Les alternatives se répartissent en deux groupes :

GroupeOutilsCe à quoi votre commande docker s’adresse
Docker Engine dans une VM plus légèreOrbStack, Colima (runtime par défaut), Rancher Desktop (mode moby)Un véritable démon Docker
Moteur remplacéPodman, Lima/containerd avec nerdctl, Rancher Desktop (mode containerd)L’API compatible Docker de Podman, ou rien du tout avec nerdctl. Vous utilisez surtout une CLI qui reprend la syntaxe de Docker

Dans le groupe Docker Engine, la CLI docker et Compose continuent de communiquer avec un démon Docker. Dans le groupe à moteur remplacé, la compatibilité avec Docker repose sur une couche en ligne de commande qui reproduit la syntaxe de Docker, complétée, pour Podman, par un socket qui répond aux appels de l’API Docker. Sur macOS et Windows, tous ces outils exécutent toujours les conteneurs Linux dans une VM. Changer d’outil modifie la façon dont cette VM est gérée, pas son existence.

Pourquoi docker ne fonctionne-t-il plus après un changement d’outil ?

La CLI docker se connecte au socket désigné par la variable DOCKER_HOST ou par le contexte Docker actif. Lorsque les commandes échouent après l’installation d’une alternative, la CLI pointe généralement vers un socket derrière lequel aucun moteur ne tourne. Notre guide de dépannage des erreurs « Docker daemon not running » passe en revue les messages d’erreur.

docker context ls          # the active endpoint is marked with *
docker context use colima  # point the CLI at another engine

Vous pouvez tester une alternative sans désinstaller Docker Desktop. Changez de contexte pour essayer le nouvel outil, puis revenez au précédent.

Un fichier Compose pour tester chaque outil

Utilisez un même fichier minimal pour vérifier chaque outil. Passez-le d’abord dans le validateur YAML, afin que tout échec provienne de l’outil et non d’une faute de frappe.

# compose.yaml
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - "5432:5432"

Comparatif des alternatives à Docker

OutilOSCoûtMoteurCLI dockerCompose
Podman + Podman DesktopmacOS, Windows, LinuxGratuit, open sourcePodmanVia un alias ou le socket APIpodman compose + fournisseur
OrbStackmacOSGratuit pour un usage personnel, payant pour un usage commercialDocker EngineOuiOui, inclus
ColimamacOS, LinuxGratuit, open sourceDocker (par défaut)Oui, installée séparémentCompose à installer séparément
Rancher DesktopmacOS, Windows, LinuxGratuitcontainerd ou mobyEn mode mobynerdctl compose ou docker compose
Lima + nerdctlmacOS, LinuxGratuit, open sourcecontainerdNon (nerdctl)nerdctl compose

Podman avec Podman Desktop

Podman remplace le moteur de Docker et fonctionne sans démon. Podman Desktop est gratuit et open source pour macOS, Windows et Linux. Sur Mac et Windows, vous disposez d’une commande podman native, et vos conteneurs s’exécutent dans une VM Linux que Podman appelle une Podman machine.

  • CLI docker : les commandes de Podman reprennent la syntaxe de Docker, si bien que alias docker=podman couvre l’essentiel des usages quotidiens. Sur Mac et Windows, Podman accepte également les clients de l’API Docker : vous pouvez donc faire pointer la véritable CLI docker et les outils basés sur Docker vers son socket.
  • Compose : podman compose est intégré, mais il s’agit d’une fine surcouche qui transmet le travail à docker-compose ou à podman-compose. Installez l’un des deux au préalable.
  • Pour qui : les équipes qui ont besoin d’un seul outil gratuit sur macOS, Windows et Linux.
brew install podman
podman machine init
podman machine start
podman run --rm hello-world
podman compose up

La documentation d’installation de Podman recommande, sur macOS, l’installateur officiel plutôt que Homebrew. Podman Desktop dispose de son propre installateur.

OrbStack

OrbStack est une application exclusivement macOS. Elle embarque un moteur Docker et les outils Compose et vise à se comporter comme Docker Desktop : la CLI docker et Compose fonctionnent donc sans modification.

  • Coût : selon les conditions de licence d’OrbStack, l’outil est gratuit pour un usage personnel. Les freelances, les entreprises et les organisations à but non lucratif doivent acquérir une licence payante par utilisateur.
  • Compose : inclus.
  • Pour qui : les équipes travaillant exclusivement sur Mac qui veulent conserver le workflow de Docker Desktop avec une couche de VM différente. Les configurations par projet, comme les Dev Containers pour le développement local, continuent également de fonctionner.
brew install --cask orbstack
docker run --rm hello-world
docker compose up

Colima

Colima est un outil en ligne de commande gratuit pour macOS (Intel et Apple Silicon) et Linux. Avec son runtime Docker par défaut, Colima exécute le moteur de Docker dans une VM. Il propose également les runtimes containerd et Incus.

  • CLI docker : à installer séparément.
  • Compose : non fourni. Installez la formule Homebrew docker-compose, puis créez un lien vers ~/.docker/cli-plugins pour que docker compose fonctionne.
  • Pour qui : les développeurs qui vivent dans le terminal et n’ont pas besoin d’interface graphique.
brew install colima docker docker-compose
mkdir -p ~/.docker/cli-plugins
ln -sfn "$(brew --prefix)/opt/docker-compose/bin/docker-compose" ~/.docker/cli-plugins/docker-compose
colima start
docker run --rm hello-world
docker compose up

Si vous démarrez Colima avec le runtime containerd, vous exécutez les conteneurs avec colima nerdctl au lieu de docker.

Rancher Desktop

Rancher Desktop fonctionne sur macOS (Intel et Apple Silicon), Windows et Linux. Rancher Desktop peut utiliser containerd ou dockerd (moby) comme moteur. Choisir moby active l’API Docker, ce qui permet à la CLI docker de fonctionner sans alias.

  • Compose : le tutoriel sur les conteneurs couvre Compose avec nerdctl compose comme avec docker compose.
  • Points de vigilance : un seul runtime peut être actif à la fois. Les images récupérées avec un runtime ne sont plus disponibles après le passage à l’autre. Le Kubernetes intégré peut être désactivé.
  • Pour qui : les équipes multiplateformes qui veulent une interface graphique et l’API Docker.
rdctl set --container-engine.name=moby
docker run --rm hello-world

Vous pouvez également effectuer ce changement dans l’application, sous Preferences > Container Engine, comme décrit dans la documentation des préférences du moteur.

Lima avec containerd et nerdctl

Lima lance des machines virtuelles Linux avec partage de fichiers et redirection de ports automatiques. Le template par défaut exécute containerd. Lima prend également en charge des hôtes autres que macOS, comme Linux et NetBSD.

  • CLI docker : non utilisée. nerdctl reproduit les commandes de Docker, et vous l’appelez sous la forme lima nerdctl.
  • Compose : nerdctl compose implémente la Compose Specification. Certains champs ne sont pas implémentés, comme links, ainsi que l’indiquent les notes de nerdctl sur Compose.
  • Pour qui : les développeurs qui veulent des briques open source à assembler eux-mêmes. Lima propose aussi un template docker si vous préférez exécuter Docker Engine.
brew install lima
limactl start
lima nerdctl run --rm hello-world
lima nerdctl compose up

Comment choisir une alternative à Docker ?

Votre système d’exploitation élimine plusieurs alternatives à Docker avant même que les fonctionnalités n’entrent en ligne de compte. OrbStack ne fonctionne que sur macOS, et Colima n’existe pas pour Windows. Pour un outil unique sur macOS, Windows et Linux, il reste Podman Desktop et Rancher Desktop. Si vos fichiers Compose et vos scripts doivent fonctionner sans modification, choisissez un outil qui exécute Docker Engine : OrbStack, Colima ou Rancher Desktop en mode moby. Si vous voulez vous passer complètement du démon Docker, choisissez Podman.

Conclusion

La question déterminante est de savoir si un outil conserve Docker Engine ou le remplace. Cette seule différence décide si vos commandes docker et vos fichiers Compose fonctionneront tels quels. Choisissez l’outil adapté à votre OS et à votre situation en matière de licence, testez-le avec le compose.yaml ci-dessus, et vérifiez docker context ls avant de supprimer Docker Desktop.

FAQ

La licence de Docker Desktop s'applique-t-elle à Docker Engine sous Linux ?

Non. Docker Engine est open source sous licence Apache 2.0 : son usage commercial n'est soumis à aucune limite de nombre de salariés ou de chiffre d'affaires. Les seuils de 250 salariés et de 10 millions de dollars proviennent du Docker Subscription Service Agreement, qui couvre Docker Desktop et le moteur qu'il embarque. Sur un poste de travail Linux, installer Docker Engine directement évite la question de la licence Desktop ainsi que la couche de VM supplémentaire.

Mes images et volumes Docker Desktop sont-ils conservés lorsque je change d'outil ?

Seul OrbStack les migre pour vous. Après l'installation, il propose de copier les conteneurs, volumes et images de Docker Desktop, et l'option reste disponible sous File > Migrate Docker Data. Il s'agit d'une copie : les données d'origine restent en place. Pour Colima, Podman ou Rancher Desktop, exportez les images avec docker save, chargez-les dans le nouveau moteur et sauvegardez les volumes nommés sous forme d'archives tar.

Testcontainers fonctionne-t-il avec Podman au lieu de Docker ?

Oui, via le socket API compatible Docker de Podman. Définissez DOCKER_HOST sur le socket Podman. Sur macOS, podman machine inspect vous donne le chemin, et vous définissez également TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE sur /var/run/docker.sock. Sous Linux, le socket se trouve dans podman/podman.sock sous XDG_RUNTIME_DIR. En mode rootless, définissez TESTCONTAINERS_RYUK_DISABLED=true pour désactiver le conteneur de nettoyage Ryuk. L'équipe Testcontainers ne teste pas activement les runtimes alternatifs : certaines fonctionnalités peuvent donc ne pas fonctionner.

Les Dev Containers de VS Code peuvent-ils utiliser Podman au lieu de Docker ?

Oui. Définissez le paramètre Docker Path des Dev Containers (dev.containers.dockerPath) sur podman sous Linux, Windows ou macOS. L'extension exécute des commandes CLI de conteneurs et ne communique jamais directement avec un démon. VS Code décrit Podman 5 et versions ultérieures comme globalement compatible avec la CLI de Docker, mais ne prend pas officiellement en charge les autres CLI compatibles Docker. Les dev containers basés sur Compose nécessitent également la configuration d'un fournisseur Compose.

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.