Open source · Windows 10 et 11, toutes éditions · Apache 2.0

Docker sur Windows, sans Docker Desktop ni WSL.

Solon est un gestionnaire de conteneurs autonome : un installateur, un moteur Docker complet dans une petite machine Linux que Solon crée et gère lui-même. Pas de licence, pas de télémétrie, pas de WSL.

Solon_0.2.0_x64-setup.exe · 103 MB · SHA-256 c3e6b2d6f5b019d47d3a161e018e0dac8d07a731f515404d3a3a93c5bc0fb5ce · Versions

Windows 11 ou 10 22H2, toutes éditions (Famille comprise), virtualisation matérielle activée. Vérifiez le SHA-256 publié avec chaque version.

L'installateur n'est pas encore signé : SmartScreen affiche un avertissement, choisissez « Informations complémentaires » puis « Exécuter quand même ». Une signature via la SignPath Foundation (signature gratuite pour les projets open source) a été demandée ; les versions seront signées dès l'acceptation du projet.

Page Activity de Solon : courbes CPU par conteneurPage Activity de Solon : courbes CPU par conteneur
≈ 3 smoteur prêt après l'ordre de démarrageDocker Desktop : 6,1 s
4×moins de mémoire, au repos comme avec une pile430–520 Mo contre 1 998 Mo
0télémétrie, compte, licenceApache 2.0

En action

Une pile en un clicNew stack… → n8n → Create and start. Vingt secondes plus tard, le navigateur s'ouvre sur https://n8n.n8n.solon.local avec un certificat reconnu. Aucun port à publier, rien à installer sur Windows.
Voir dedansLa fiche d'un conteneur : journaux, onglet Fichiers pour parcourir et échanger des fichiers avec Windows, et le shell de débogage avec ps, curl et compagnie, même dans les images sans shell.
ActivityCPU, mémoire et réseau par conteneur, survol pour les valeurs exactes, clic sur un nom pour l'isoler, fenêtres 1 min / 10 min / 1 h.

Ce que Solon fait

Des adresses qui marchent toujours

Chaque conteneur répond sur https://<nom>.solon.local, port publié ou non, avec un certificat reconnu par votre navigateur. Les services Compose ont <service>.<projet>.solon.local.

Dossiers Windows rapides

Les dossiers montés dans les conteneurs passent par solonfs, le partage de fichiers de Solon : 3,6 à 94× plus rapide que le 9P utilisé par WSL2 et Docker Desktop, selon l'opération (docs/measurements.md).

Réveil à la demande

Un conteneur sans trafic pendant dix minutes est mis en pause ; la requête suivante le réveille en une fraction de seconde. Les bases qui ne parlent qu'en interne ne sont jamais touchées.

Piles prêtes

WordPress, Odoo 18, PostgreSQL, MariaDB, MongoDB, Redis, n8n, Nextcloud, Ghost, Gitea, Uptime Kuma, Jupyter Lab, Mailpit… et des kits de démarrage Django, Flask, FastAPI et Next.js qui génèrent un projet au premier lancement.

Compose, en entier

Ouvrez un dossier, Solon reconnaît la pile ou en propose une. Services, journaux mêlés, Up / Down / Rebuild, et le fichier Compose modifiable sur place avec Save and Up.

Voir dedans

Onglet Fichiers avec glisser-déposer, terminal, shell de débogage même dans les images sans shell, courbes CPU, mémoire et réseau par conteneur. VS Code Dev Containers fonctionne tel quel.

Radiographie

Qui appelle qui, en direct : une carte de vos services et un journal de chaque échange, appels refusés en rouge, HTTP complet pour ce qui entre par une adresse locale, des noms sur les hôtes extérieurs. Pause, pas à pas, relecture. Valeurs sensibles masquées avant d'être gardées ; tout reste sur votre PC.

Conteneurs groupés par projet Compose, chacun avec son adresse solon.local.
La fiche d'un conteneur : réseau, montages, environnement, fichiers, terminal, shell de débogage.
La galerie de piles prêtes et de kits de démarrage.

Mesuré face à Docker Desktop, comparé aux autres

Même machine (Windows 11 Pro, 24 cœurs logiques), même pile Compose (une application web Python et PostgreSQL 16), réglages par défaut des deux côtés. Docker Desktop 4.66.1 mesuré le 3 septembre 2026, puis désinstallé ; Solon 0.1.0 remesuré le 10 septembre 2026 avec le script du dossier bench/.

Docker DesktopSolon
Moteur prêt après l'ordre de démarrage6,1 s2,6 à 3,4 s
Mémoire au repos, aucun conteneur1 998 Mo430 à 520 Mo
Mémoire avec la pile qui tourne5 146 Mo1 196 Mo
compose down puis up -d7,1 s5,2 s
L'application web répond après up1,5 s1,0 à 2,5 s
Page de connexion, moyenne de 527 à 46 ms48 à 88 ms
Initialisation de la base avec données d'exemple (CPU)13,6 s12,9 à 13,4 s
Écritures synchrones sur un volume, fdatasync / fsync154 / 79 ops/s240–290 / 132–137 ops/s
Dossier Windows, 5 000 fichiers : listage / attributs / lectures / écritures9P6,6× / 94× / 3,6–9× / 4× plus rapide

Honnêtement : Solon gagne sur ce qui coûte tous les jours (démarrage, mémoire, fichiers, écritures disque) ; sur le calcul pur les deux sont équivalents ; la latence web est identique. Reproductible avec bench/bench.ps1. bench/

Empreinte

Solon mesuré le 13 septembre 2026 avec trois conteneurs en marche ; Docker Desktop mesuré sur la même machine ; Podman Desktop et Rancher Desktop d'après leur documentation (publié, pas mesuré ici).

SolonDocker DesktopPodman DesktopRancher Desktop
Installateur102 Mo≈ 600 Mo (publié)≈ 100 Mo + machine WSL (publié)≈ 500 Mo (publié)
Installé sur le disque406 Mo6 Go requis (publié)500 Mo + 2 à 10 Go d'images (publié)non publié
Mémoire au repos, aucun conteneur430 à 520 Mo1 998 Momachine WSL 2, jusqu'à 50 % de la RAM (publié)moitié des cœurs et de la RAM par défaut (publié)
Mémoire avec une application web + PostgreSQL1 196 Mo5 146 Monon mesurénon mesuré
Exige WSL 2nonoui, ou ancien moteur Hyper-Vouioui

Fonctionnalités comparées

Solon en 0.2.1 ; les autres d'après leur documentation en septembre 2026. « Partiel » : la fonction existe avec une réserve.

SolonDocker DesktopPodman DesktopRancher Desktop
CLI docker et Compose officiels, sans aliasouiouipartiel : socket compatibleoui (moby)
Fonctionne sans WSL 2ouipartiel : ancien moteur Hyper-Vnonnon
Windows Familleouiouiouioui
https://service.projet.solon.local pour chaque conteneur, certificat reconnuouinonnonnon
Page Projets : adresse, environnement, ports vérifiés avant Up, journaux filtrésouipartiel : liste Composepartiel : liste Composenon
Un environnement par branche Git, volumes copiésouinonnonnon
Sauvegarde et restauration d'un projet, volumes comprisouipartiel : extensionnonnon
Conteneurs inactifs en veille, réveil à la demandeouipartiel : toute la machine (Resource Saver)nonnon
Dossiers Windows partagés par solonfs, 3,6 à 94× plus rapide que 9P selon l'opérationouinon : 9Pnon : 9Pnon : 9P
Recherche des projets Compose sur le disqueouinonnonnon
VS Code Dev Containersoui, vérifiéouipartiel : réglage du cheminoui
Kubernetes intégrénonouipartiel : extensionsoui (K3s)
Conteneurs Windowsnonouinonnon
Place de marché d'extensionsnonouiouinon
Gratuit en entrepriseoui (Apache 2.0)payant au-delà de 250 salariés ou 10 M$ouioui
Installateur signépas encoreouiouioui

Piles et kits de démarrage

« New stack… » ouvre une galerie. On choisit, on désigne un dossier, on relit le compose.yaml généré, « Créer et démarrer ». Ouvrir un dossier sans fichier Compose fait regarder à Solon ce qu'il contient pour proposer un environnement.

Kits de démarrage

Le dossier du projet est monté dans le conteneur ; au premier Up, un petit script installe les dépendances, génère le squelette officiel si le dossier est vide, puis lance le serveur de développement avec rechargement à chaud. Rien à installer sur Windows.

Django + PostgreSQLFlask + RedisFastAPI + PostgreSQLNext.js

Applications prêtes

WordPressPostgreSQL + AdminerMariaDB + AdminerMongoDB + Mongo ExpressRedisn8nNextcloudGhostGiteaUptime KumaJupyter LabStatic site (Nginx)

Outils du développeur

MailpitBlank compose.yaml

Versions

Chaque version fournit l'installateur et son SHA-256. Installer par-dessus une version précédente conserve images, conteneurs et volumes.

Solon 0.2.0

Solon no longer has a window. It has an icon in the taskbar corner and the `solon` command. *Version française plus bas.* Why Solon was a very good Docker Desktop, and "very good" does not make anyone switch tools. What makes Solon different is what happens underneath: the real `docker` and `docker compose`, no WSL, Windows Home included, an engine that boots in three seconds, puts idle containers to sleep and gives the memory back, an `https://service.project.solon.local` address for every container, and a Radiography that says in plain words why a service does not answer. None of that needs a window. So the window is gone, and with it a few hundred megabytes of interface that merely duplicated `docker`. What you get The icon, bottom right. One click: the engine state, your Compose projects with *Open https://…*, *Start*, *Restart*, *Stop*, the same for lone containers, *Open a terminal* with `solon` and `docker` ready, *Why is it broken?*, *Update Solon…*, *Start with Windows* (on; untick once and it stays off), *Start / Stop engine*, *Quit*. Windows notifications when the engine fails, when Docker restarts, when the engine disk is almost full, and when your projects are back after a reboot. The `solon` command, next to `docker` in your PATH. Everything the window did is there, and more: - `solon` : engine state and every running container with its address. - `solon start | stop | restart`, `solon projects`, `solon domains`, `solon settings key=value`. - `solon why [name]`, `solon trace [name] -f`, `solon clear` : the Radiography, in text. - `solon backup`, `solon restore`, `solon clone <from> <to>` (one environment per Git branch, volumes copied). - `solon scan` (Docker projects on this PC), `solon import` (volumes and images from Docker Desktop, untouched), `solon shell` (root inside the engine). - `solon update` : checks GitHub, downloads the installer, verifies its SHA-256, installs. The only outgoing request Solon ever makes, and only when you ask. - `solon prereq`, `solon logs -f`, `solon diag`, `solon exec`, `solon watch`, `solon version`. `--json` where it makes sense. What disappears The Containers, Images, Volumes and Networks screens (`docker` does that), the Projects page with its Compose editor, logs panel, file browser and templates (your editor, `docker compose logs`, `docker cp`), the in-machine terminal (`solon shell`), the Activity graphs (`docker stats`, no graphical equivalent), the Radiography map and playback bar (`solon trace` and `solon why` for now; the map comes back in a VS Code extension, the next step), the Settings screen (`solon settings`), the command palette, the welcome tour, themes. Your images, containers, volumes, settings and history do not move. Installing 0.2.0 over any 0.1.x keeps everything. Installation Download `Solon_0.2.0_x64-setup.exe` and check its SHA-256 against `SHA256SUMS.txt`. Open a new terminal afterwards to get `solon` on the PATH.

Solon 0.1.18

Solon gets a command: `solon`. *Version française plus bas.* New: the `solon` command It is installed next to `docker`, in the same folder already on your PATH. `docker` talks to your containers; `solon` talks to the engine around them. No administrator prompt, no outgoing request. English, or French when Windows is. - `solon` : engine state, then every running container with its project and its `https://service.project.solon.local` address. - `solon start`, `solon stop`, `solon restart` : with the steps shown as they happen. - `solon projects`, `solon domains` : your Compose projects with their Windows folder, and every local address answering right now. - `solon why [name]` : what is wrong, in plain words, from the Radiography history. Refused calls grouped by caller, destination and port, with a hint (container asleep, nothing listening, address outside the engine); server errors per host; 401/403 refusals; the slowest request when it is above one second. When nothing stands out, it says so, with the counts. - `solon trace [name] [-f]`, `solon clear [project]` : the journal of exchanges, live with `-f`. - `solon backup`, `solon restore` : the same one-zip backup as the application, from a script. - `solon settings key=value`, `solon prereq`, `solon logs -f`, `solon diag`, `solon exec`, `solon watch`, `solon version`. - `--json` on status, projects, domains, trace, settings, prereq and watch for scripts. Also The application and the command now share one code base for the service channel, backups and diagnostics. Nothing changes on screen. Installation Download `Solon_0.1.18_x64-setup.exe` and check its SHA-256 against `SHA256SUMS.txt`. Installing over 0.1.x keeps your images, containers and volumes. Open a new terminal to get `solon` on the PATH.

Solon 0.1.17

A maintenance release: a full read-through of the code found about ninety defects, and the serious ones are fixed here. Nothing new to learn. *Version française plus bas.* Fixed in the app - The Explorer, Open logs and Open buttons of the diagnostic did nothing: a permission was missing. - Engine and Radiography subscriptions were never closed, and the per-container statistics streams outlived their screen: each visit left about ten more open. They are now closed when you leave. - A black console window flashed on every file copy. No more. - Down on a project and Clear in Radiography now ask for confirmation; both are destructive. - Pressing Enter inside a dialog no longer triggers the action behind it. Saving settings twice in a row, invalid numbers in Settings, a "yes" that was not translated, a stale update banner after updating: fixed. Fixed in the engine service - The Windows `hosts` file could be rewritten with only Solon's lines left, when the antivirus was holding it or when it contained a non-ASCII character in ANSI encoding. Personal entries were lost. It is now read as bytes, retried while locked, and rewritten byte for byte. - A single timed-out call to the engine shifted every later answer until the next restart. - Two shared drives could end up on the same port after a drive was unplugged, so the second one read the first. - The private key of the local https certificate authority is only created if its folder can be restricted to administrators, and the authority can only sign `*.solon.local`. - The sleep logic no longer pauses a container that still has an open connection. - The relay and the control pipe no longer stop serving after a transient Windows error. A line without end on the control pipe is rejected instead of being read forever. Settings are validated and written atomically. Fixed in the Linux engine - The reaper of dead processes could block for good and fill the process table of the engine. - One malformed frame from the file server could bring the whole engine down. - The DNS relay from 0.1.16 is now bounded: packet size, in-flight queries, remembered names. - Container runtime shutdown is now kill, wait, remove, in that order. Radiography masking Headers with a suspicious name outside the known list, OAuth redirections carrying `?code=`, and `;jsessionid=` path segments are masked too. Uninstall The "Solon Local CA" certificate is now really removed from the Windows store at uninstall, as the Store listing has promised all along. Installation Download `Solon_0.1.17_x64-setup.exe` and check its SHA-256 against `SHA256SUMS.txt`. Installing over 0.1.x keeps your images, containers and volumes.

Solon 0.1.16

A new screen: Radiography, a debugger for what your services say to each other. *Version française plus bas.* New - Radiography (`Ctrl+7`). A live map of who calls whom inside your projects, and a journal of every exchange: TCP connections with their outcome, and for anything that comes in through a `*.solon.local` address, the full HTTP exchange — method, path, status, duration, headers on both sides. A refused connection shows up in red without instrumenting anything: that is the case nobody finds in the logs, because the calling library swallows the error. The map draws one circle per service and one line per relationship; the journal unfolds line by line. - A playback bar. Pause, go back 10 seconds, step from one exchange to the next, replay at ×0.25, ×1 or ×4, and come back to live. While you scrub, the whole screen — map and journal — shows the engine as it was at that instant. Space and the arrow keys drive it. - Request and response bodies, per project. Off by default. Pick a project and tick *Capture bodies*: Solon keeps the first 4 KB of each body, only for text (JSON, HTML, forms, XML), never for images, archives or compressed responses. The Settings screen lists the projects it applies to. - Names on outside addresses. The engine now runs a tiny DNS relay: it forwards your containers' questions to the DNS servers your PC already uses, returns the answers untouched, and remembers which name resolved to which address. The journal shows `api.stripe.com`, not a number. If the relay does not answer, containers fall back to your PC's servers on their own. Containers started before this update keep the old setting until they are recreated. - *Clear* follows the project filter: with a project selected, it clears only that project. Masked, before it is stored Nothing sensitive reaches the history. `Authorization`, `Cookie`, `Set-Cookie`, API keys and the like keep their name but lose their value. URL parameters and form fields whose name contains `pass`, `pwd`, `token`, `secret`, `key`, `auth`, `session`… lose their value; so do JSON keys with such names, at any depth. E-mail addresses and phone numbers disappear from paths, headers and bodies. The masking happens at capture time, not at display time: what was not captured cannot leak, even if the history is read later. Testing this on a real WordPress caught a hole before release: WordPress sends its password as `pwd`, which was not in the list. It is now. What it costs One kernel probe on TCP state changes, measured at about 4 µs per connection on the worst case there is (refused connections in a loop). A thousand connections per second would cost 0.4 % of one core. The reader inside the engine stays under 4 MB. Everything stays on your PC; nothing is sent anywhere, and nothing is written outside `%ProgramData%\Solon`. Not yet Calls from container to container show the connection but not its content, and database protocols are not decoded. HTTPS going out of a container is not read either. These come next; the design notes are in `docs/radiographie.md`. Installation Download `Solon_0.1.16_x64-setup.exe` and check its SHA-256 against `SHA256SUMS.txt`. Installing over 0.1.x keeps your images, containers and volumes. Containers you want named in Radiography should be recreated once (`docker compose up -d --force-recreate`) so they pick up the DNS relay.

Solon 0.1.15

A small one: the Activity screen stops forgetting. *Version française plus bas.* Fixed - The Activity graphs no longer reset when you leave the screen. All the measuring lived inside the view, so switching to another section threw the history away — which meant the *10 min* and *1 h* buttons could never show anything, even though the code already kept an hour of points. The engine counters are now collected outside the view: every 2 seconds while you are looking at Activity, every 5 seconds otherwise, and not at all while the window is hidden, since Solon lives in the tray and nobody is reading. An hour at 5 seconds is 720 points across three series. Per-container curves still start fresh with the view. Docker's stats stream costs CPU per container, and keeping an hour of curves for twenty containers would be expensive to collect and rarely looked at. - The engine block at the bottom of the sidebar was polling the same counters on its own every 3 seconds. It reads the shared history now, so one duplicate polling loop is gone. Solon does slightly less work than before, not more. Also - A benchmark for something nobody measures: how much memory actually comes back to Windows. On the development machine, a container took 747 MB and 676 MB of it were returned in under 35 seconds — about 90 %, with the rest staying flat afterwards. Run it yourself with `bench\mem-reclaim.ps1`; the numbers and the method are in `docs/measurements.md`. The other engines were not measured here, so this says what Solon does, not what they do not. Installation Download `Solon_0.1.15_x64-setup.exe` and check its SHA-256 against `SHA256SUMS.txt`. Installing over 0.1.x keeps your images, containers and volumes.

Limites connues

  • Windows Famille fonctionne aussi : l'installateur active la Plateforme de machine virtuelle, qui suffit à Solon.
  • Pas de Kubernetes, pas de machines Linux séparées, pas d'images ARM (x86-64 seulement).
  • L'installateur n'est pas encore signé ; c'est la prochaine étape avant un lancement plus large.
  • Pas de mise à jour silencieuse : Solon signale qu'une nouvelle version existe (Réglages → Mises à jour, désactivable). Un clic télécharge l'installateur, vérifie son SHA-256 et laisse Windows vous demander l'autorisation avant d'installer.
  • Testé sur la machine de développement et une machine vierge. Les retours d'autres configurations sont bienvenus.