XDA’s argument this month is that the smartest VS Code upgrade is not another autocomplete extension, it is dev containers. The reasoning holds up. A dev container is a folder-scoped Linux environment defined by a devcontainer.json file, with your language runtime, system packages, and editor extensions all pinned. Open the folder in a supported editor and the tooling reconciles the container from that file, so a fresh clone reaches a working state without a page of manual setup. We tested eight apps for running dev containers on Windows, macOS, and Linux, picked for how well they handle the actual devcontainer.json spec and for what happens when a teammate on a different OS runs the same folder.
What to look for in a dev container app
Not every container tool understands the dev containers spec, and the ones that do sit on very different runtimes.
- Spec support. The
devcontainers/clireference reads.devcontainer/devcontainer.json, resolves features, forwards ports, and mounts your workspace. Look for tools that call this CLI or embed it, not tools that shell out todocker runand hope. - Runtime. Docker Engine is still the default. Podman is the drop-in that runs rootless. Colima and Lima are the macOS options that skip Docker Desktop’s license terms.
- Kubernetes and cloud. Some tools can run the same
devcontainer.jsonagainst a K8s cluster or a remote VM, not just your laptop. That matters once the machine you keep dev containers on is not the one under your fingers. - Editor coupling. VS Code and JetBrains Gateway both open a folder in a dev container natively. Cursor and Windsurf inherit that from the VS Code base. Vim and Emacs users need a CLI-first tool.
- Performance on macOS and Windows. Bind mounts across the host boundary are the slowest part of any container workflow. Look for VirtioFS, gRPC-FUSE tuning, or a filesystem sync layer.
Quick comparison
| App | Best for | Platforms | Free plan | Starting price | Standout feature |
|---|---|---|---|---|---|
| Docker Desktop | Default runtime, GUI users | Windows, macOS, Linux | Free for personal / small business | Business tier per seat/month | Widest tooling coverage |
| Podman Desktop | Rootless Docker replacement | Windows, macOS, Linux | Free, open source | Free | Runs rootless by default |
| DevPod | Same container on laptop, K8s, or cloud | Windows, macOS, Linux | Free, open source | Loft Pro for teams | Provider model for cloud dev |
| OrbStack | Fastest Docker on macOS | macOS | Free for personal | Paid tier for commercial | VirtioFS, low RAM footprint |
| Rancher Desktop | Docker plus a real local K8s | Windows, macOS, Linux | Free, open source | Free | k3s built in |
| Colima | Lightweight Docker on macOS/Linux | macOS, Linux | Free, open source | Free | No GUI, low overhead |
| Distrobox | Containerized Linux desktops | Linux | Free, open source | Free | Runs GUI apps from containers |
| GitHub Codespaces | Cloud-hosted dev containers | Web, VS Code, JetBrains | Free monthly hours | Per-hour after quota | Same devcontainer.json, in the cloud |
The apps
1. Docker Desktop — Best for the default runtime with the widest ecosystem
Docker Desktop is still what the dev containers spec assumes on day one. Install it, install the Dev Containers extension in VS Code, and “Reopen in Container” works with zero configuration. It bundles the Docker Engine, Kubernetes, and the compose plugin, and it manages the Linux VM on Windows and macOS so you never touch WSL or a Lima instance directly.
Where it falls short: The subscription terms bite for larger organizations. Anything over 250 employees or 10 million USD in revenue needs a Business seat. Startup and personal use are still free, but read the license before you deploy it to a fleet.
Pricing:
- Free: Personal, education, small business, non-commercial open source
- Paid: Pro, Team, and Business seats billed per user per month
Platforms: Windows, macOS, Linux
Download: docker.com/products/docker-desktop
Bottom line: If you are picking one tool and moving on, install Docker Desktop and stop reading. The rest of the list is for when the license or the RAM footprint makes it a bad fit.
2. Podman Desktop — Best for a rootless, license-free replacement
Podman Desktop is the Red Hat sponsored GUI over Podman, and it now handles devcontainer.json through the VS Code Dev Containers extension by exposing a Docker-compatible socket. You get an OCI runtime that runs rootless by default, no daemon in the background, and a permissive Apache 2.0 license.
Where it falls short: Compose parity is close but not identical to Docker’s. Volume mount semantics on macOS still lag Docker Desktop for very large workspaces. Bug reports on dev containers with heavy feature layers still surface occasionally.
Pricing:
- Free: Full feature set, open source
- Paid: None
Platforms: Windows, macOS, Linux
Download: podman-desktop.io
Bottom line: Podman Desktop is the direct swap when Docker Desktop’s license is a problem, and it is the right pick when your team already runs Podman on servers.
3. DevPod — Best for the same container across laptop, K8s, and cloud
DevPod by Loft Labs treats providers as pluggable. The same devcontainer.json you open on Docker Desktop can spin up on a Kubernetes cluster, an SSH host, a fresh EC2 instance, or a Loft Vcluster, with the workspace synced in. It reuses the Microsoft devcontainers/cli internally so spec compliance is by construction, not translation.
Where it falls short: The provider ecosystem is uneven. The first-party AWS, GCP, Azure, and K8s providers are solid. Community providers vary. The desktop UI is functional rather than polished.
Pricing:
- Free: Full open-source client, all providers
- Paid: Loft Enterprise for centralized team management
Platforms: Windows, macOS, Linux, CLI
Download: devpod.sh
Bottom line: DevPod is the pick when “dev container on my laptop” needs to become “dev container in the cluster” without rewriting the file.
4. OrbStack — Best for the fastest Docker on macOS
OrbStack is a from-scratch Docker replacement for Apple Silicon Macs. Cold start is a couple of seconds, RAM idle sits well below Docker Desktop, and VirtioFS is the default for bind mounts, which is the single largest performance win for dev containers that mount large monorepos. It also runs full Linux VMs alongside containers so you can drop into a shell without a container wrapper.
Where it falls short: macOS only. Commercial use is paid. The lack of Windows and Linux builds means it can never be your team’s only dev container tool.
Pricing:
- Free: Personal, non-commercial use
- Paid: Pro tier for commercial use, billed per seat per month
Platforms: macOS
Download: orbstack.dev
Bottom line: OrbStack is the right first install on a personal Mac. On a work Mac, factor the commercial tier into the decision.
5. Rancher Desktop — Best for a real local Kubernetes plus dev containers
Rancher Desktop by SUSE ships Docker or containerd as the runtime and k3s as a real single-node Kubernetes cluster. That combination is unusual. Dev container extensions treat it as a Docker-compatible socket, and once your workflow needs a local K8s to test manifests, Rancher Desktop covers both surfaces from one install.
Where it falls short: More moving parts than a plain container runtime. First launch is slow while the Linux VM boots. Documentation on switching between the Docker and containerd runtimes is thin.
Pricing:
- Free: Full open source
- Paid: SUSE Rancher for orchestration at scale, not required for local use
Platforms: Windows, macOS, Linux
Download: rancherdesktop.io
Bottom line: Rancher Desktop is the pick when your workday alternates between “reopen in container” and kubectl apply.
6. Colima — Best for a lightweight, GUI-free Docker on macOS or Linux
Colima is a thin CLI over Lima that boots a Linux VM with Docker or containerd inside. No tray icon, no update prompts, no license. You run colima start, point the Docker CLI at its socket, and the Dev Containers extension in VS Code opens folders in containers without noticing the difference from Docker Desktop.
Where it falls short: No GUI. Kubernetes support exists but is best-effort. Volume sharing performance is workable, not the fastest on the list.
Pricing:
- Free: Fully open source
- Paid: None
Platforms: macOS, Linux
Download: github.com/abiosoft/colima
Bottom line: Colima is the terminal-first replacement for Docker Desktop on Macs. Pick it if you already live in the shell.
7. Distrobox — Best for containerized Linux desktops
Distrobox wraps Podman or Docker to run full Linux distributions as tightly integrated containers. It is not a strict dev containers spec runner, but it hits the same problem from another angle: a per-project Debian, Fedora, or Arch environment on any Linux host, with access to your home directory and GPU. Pair it with the devcontainers/cli and you have both spec-driven and freeform per-project environments.
Where it falls short: Linux only. Not a drop-in for devcontainer.json on its own, so it complements rather than replaces the other picks.
Pricing:
- Free: Fully open source
- Paid: None
Platforms: Linux
Download: distrobox.it
Bottom line: Distrobox is the answer on immutable Linux distros like Silverblue and Bazzite, where system packages are locked and per-project containers become the default workflow.
8. GitHub Codespaces — Best for the same dev container in the cloud
GitHub Codespaces takes your repo’s devcontainer.json and starts a hosted VM that opens in the browser, VS Code, or JetBrains Gateway. The switch from a local dev container to a Codespace is a one-click move because the file is already there. The advantage is that a 16 GB laptop can drive a 32 GB Codespace, and a brand new hire is coding in under two minutes.
Where it falls short: Egress and compute cost after the free hours run out. Latency for keystrokes is fine on a solid connection and painful on a hotel Wi-Fi. Some networks block the tunneling protocol.
Pricing:
- Free: Monthly core-hours for personal accounts on GitHub Free
- Paid: Per-hour billing beyond the quota, plus storage per GB per month
Platforms: Web, VS Code, JetBrains Gateway
Download: github.com/features/codespaces
Bottom line: Codespaces is the fallback when the laptop is not the machine to run the container on. Same file, different host.
How to pick the right one
- If you want the simplest install and are fine with the license: Docker Desktop. It is the default the spec assumes.
- If Docker Desktop’s terms are a problem or you want rootless: Podman Desktop.
- If you are on Apple Silicon and cost is not the constraint: OrbStack for personal, Podman Desktop for a work laptop with license concerns.
- If your team runs everything on Kubernetes: Rancher Desktop, or DevPod pointed at your cluster.
- If you spend the day in the terminal: Colima.
- If you are on Silverblue, Bazzite, or another immutable Linux: Distrobox plus the dev containers CLI.
- If you burn through hardware that cannot keep up: GitHub Codespaces.
FAQ
What is a dev container? A folder-scoped development environment defined by a .devcontainer/devcontainer.json file that pins the runtime, system packages, and editor extensions. Open the folder in a supported editor and the tool reconciles the container from that file.
Do I need Docker Desktop to use dev containers? No. The dev containers CLI works with any Docker-compatible socket. Podman, Colima, Rancher Desktop, and OrbStack all expose one.
Can I use dev containers without VS Code? Yes. The devcontainers/cli reads the same file and opens a shell in the container. JetBrains Gateway supports the spec too.
Is there a license cost for dev containers themselves? No. The spec and the reference CLI are open source under the MIT license. Cost comes from the runtime and any hosted execution.
How does a dev container compare to a virtual environment? A venv or a node_modules folder pins the language ecosystem. A dev container pins the operating system too, which is what fixes the it-works-on-my-machine bug across teammates.
Can dev containers use a GPU? Yes, on Linux hosts and on Windows with WSL2 and CUDA passthrough. Add the appropriate features and hostRequirements block to the devcontainer.json and expose the GPU device to the container.