Back to articles
Technology Insight

Migrating to Podman: A Complete Guide to Replacing Docker Desktop on Ubuntu VPS Development Environments

June 1, 2026

Introduction: The Shift from Docker to Podman in Enterprise Development

For years, Docker Desktop has been the de facto standard for developers building, testing, and deploying containerized applications. However, recent shifts in licensing models, coupled with the inherent architectural overhead of managing a heavy desktop application, have prompted enterprise engineering teams to look for more efficient, cost-effective, and secure alternatives. When developing on a Virtual Private Server (VPS) running Ubuntu, resource optimization and security are paramount. This is where Podman (Pod Manager) emerges as the premier drop-in replacement for Docker.

Unlike Docker, which relies on a centralized, root-privileged daemon, Podman operates on a daemonless architecture and supports rootless containers out of the box. This blog post provides a comprehensive, technical blueprint for configuring Podman on an Ubuntu VPS development environment to completely and seamlessly replace Docker Desktop.

---

Why Replace Docker Desktop with Podman on a VPS?

Before diving into the configuration, it is essential to understand the strategic and technical advantages of migrating your business's development workflows to Podman:

  • Daemonless Architecture: Docker relies on the dockerd daemon. If the daemon crashes, all running containers go down with it. Podman interacts directly with the Linux kernel runtime via the OCI (Open Container Initiative) specification, eliminating a single point of failure.
  • Enhanced Security (Rootless by Default): Docker containers traditionally run as the root user on the host system, creating a significant security vulnerability. Podman allows non-root users to create, run, and manage containers, isolating development environments and mitigating host-compromise risks.
  • Resource Efficiency: Docker Desktop requires a dedicated virtual machine layer on macOS and Windows, and even on Linux, its daemon consumes continuous background resources. Podman is a lightweight CLI tool that only consumes resources when containers are actively running, making it ideal for cost-effective Ubuntu VPS instances.
  • Native Pod Support: Podman introduces the concept of "Pods" (similar to Kubernetes Pods), allowing developers to group tightly coupled containers together, sharing network and storage namespaces seamlessly before moving workloads to production Kubernetes clusters.
---

Step 1: System Preparation and Installing Podman on Ubuntu

To begin the migration, log into your Ubuntu VPS via SSH. First, ensure your system repositories are up to date. While Ubuntu includes Podman in its official repositories, we want to ensure we install a modern version equipped with the latest OCI features.

sudo apt update && sudo apt upgrade -y
sudo apt install podman -y

Verify the installation by checking the Podman version and system environment info:

podman info
Note: Podman is fully compliant with the Open Container Initiative (OCI) standard, meaning it can pull, run, and manage standard Docker images from Docker Hub or any private container registry without modifications.
---

Step 2: Configuring the Smooth "Docker" Alias

One of the biggest hurdles in changing developer tools is breaking muscle memory. Podman is designed as a drop-in CLI replacement for Docker. The CLI syntax is deliberately identical. To ensure your existing development scripts, CI/CD pipelines, and terminal commands continue to function without rewriting them, you can configure a system-wide or user-specific alias.

Open your user profile configuration file (e.g., ~/.bashrc or ~/.zshrc) and append the following line:

alias docker=podman

Apply the changes instantly to your current terminal session:

source ~/.bashrc

Now, typing docker run or docker ps will transparently execute podman run and podman ps under the hood, ensuring zero workflow disruption for your development team.

---

Step 3: Setting Up Rootless Container Support

To maximize the security benefits of Podman on your Ubuntu VPS, you should configure it to run in rootless mode for standard development accounts. This prevents developers from needing sudo privileges to manage containers.

1. Configure SubUID and SubGID Mapping

Rootless Podman uses user namespaces to map a range of UIDs and GIDs inside the container to non-privileged UIDs and GIDs on the host system. Ensure your development user has proper allocations assigned in /etc/subuid and /etc/subgid:

sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 devuser

2. Enable Systemd Lingering

By default, a non-root user's processes are terminated when they log out of their SSH session. To allow your development containers to run persistently in the background on the VPS, enable systemd lingering for that specific user:

sudo loginctl enable-linger devuser
---

Step 4: Seamless Integration with Docker Compose

Modern application development relies heavily on multi-container orchestration via docker-compose.yml files. A common misconception is that moving away from Docker Desktop means losing access to Docker Compose. Podman addresses this beautifully through the podman-compose utility or by routing standard Docker Compose directly to Podman's systemd service socket.

Option A: Using Podman Compose

For most standard multi-container environments, installing the native python-based wrapper is the quickest solution:

sudo apt install podman-compose -y

You can now run your traditional stacks using podman-compose up -d.

Option B: Enabling the Podman Socket for Native Docker Compose v2

If your development tools rely strictly on the official docker-compose binary or specific IDE integrations (like VS Code Dev Containers), you can activate a background systemd socket that mimics the Docker daemon API:

systemctl --user enable --now podman.socket

Set the environment variable so Docker Compose knows where to find the Podman socket:

export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock

Add this export statement to your ~/.bashrc file to ensure persistence across reboots. This allows standard binaries to communicate directly with Podman as if it were Docker.

---

Step 5: Managing Registries and Short-Names

Unlike Docker Desktop, which assumes all image searches originate from Docker Hub (docker.io), Podman promotes a secure, registry-agnostic approach. When you pull an image like ubuntu:latest, Podman will prompt you to choose which registry to pull from.To streamline this behavior for a faster developer experience, edit the registry configuration file at /etc/containers/registries.conf or create a user-specific configuration at ~/.config/containers/registries.conf:

unqualified-search-registries = ['docker.io', 'quay.io', 'gcr.io']

This tells Podman to automatically search Docker Hub, Red Hat Quay, and Google Container Registry sequentially if a fully qualified image path is not provided.

---

Conclusion: A Modern, Secure, Lean Development Environment

Replacing Docker Desktop with Podman on an Ubuntu VPS is more than just a cost-saving measure; it is a step forward toward modern cloud-native engineering standards. By removing the bulky daemon, implementing strict rootless security, maintaining total docker-compose compatibility, and utilizing standard Linux systemd services, your business benefits from a more robust, secure, and performant development lifecycle.

Embrace the freedom of an open-source, OCI-compliant container ecosystem today by migrating your staging and development servers to Podman.

Migrating to Podman: A Complete Guide to Replacing Docker Desktop on Ubuntu VPS Development Environments | DPTCloud