Diego Betto's Blog
Portainer dashboard managing Docker containers

Diego Betto · September 8, 2026 · 4 min di lettura

Portainer: a web UI for Docker (and how it compares to the alternatives)

What Portainer is, how to install it in minutes, and how it stacks up against Docker Desktop, Rancher, Lens and Dockge.

Condividi:XLinkedInFacebookWhatsApp

What is Portainer

Portainer is a web-based UI for managing Docker (and Kubernetes) environments. Instead of remembering docker ps, docker inspect and juggling docker-compose.yml files over SSH, you get a dashboard where you can see containers, images, volumes, networks and stacks, and act on them with a few clicks.

It’s not just “eye candy” over the CLI: it also handles things that are genuinely annoying to do by hand, like managing multiple Docker hosts from one place, deploying stacks from a Git repo, setting up RBAC for a team, or getting a live view of logs and resource usage without SSHing in.

It comes in two flavors:

  • Portainer CE (Community Edition) — free, open source, covers the vast majority of self-hosted use cases.
  • Portainer BE (Business Edition) — paid, adds things like SSO/OAuth, RBAC at a more granular level, and support.

For a homelab or a small team running a handful of Docker hosts, CE is more than enough.

Installing Portainer

Running Portainer itself is just… a Docker container. The official one-liner:

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9443:9443 \
  --name portainer --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest
  • -v /var/run/docker.sock:/var/run/docker.sock gives Portainer access to the local Docker daemon — this is how it manages the host it’s running on.
  • portainer_data is a named volume that persists Portainer’s own configuration (users, endpoints, settings) across upgrades.
  • Port 9443 serves the HTTPS UI (there’s also a plain HTTP option on 9000 if you terminate TLS elsewhere).

Once it’s up, open https://<your-host>:9443, create the admin user on first login, and you’re in.

If you’d rather use Compose (handy if Portainer is one service among many in your stack):

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:

For managing remote Docker hosts, you deploy the lightweight Portainer Agent on each of them and connect it from the main Portainer instance — no need to expose the Docker socket over the network directly.

I’ve also written a separate guide on how to safely update an existing Portainer instance without losing containers or volumes.

What you get once it’s running

  • Container management: start/stop/restart, inspect, exec into a shell, tail logs, view CPU/memory stats — all from the browser.
  • Stacks: deploy docker-compose.yml files directly from the UI, from a pasted file, or straight from a Git repo (with optional auto-redeploy on push, which is genuinely nice for small self-hosted setups).
  • Multi-environment: manage several Docker hosts (or Kubernetes clusters, or Docker Swarm) from a single Portainer instance via the agent.
  • Templates: one-click deploy for common apps (Nginx, Postgres, WordPress, etc.) from the App Templates section.
  • Access control: users, teams, and per-resource permissions — useful the moment more than one person touches the same host.
  • Kubernetes support: Portainer also manages K8s clusters, though if Kubernetes is your primary target, more specialized tools tend to fit better (more on that below).

How it compares

Tool Scope Best for Downside
Portainer Docker, Swarm, Kubernetes Self-hosted homelabs, small-to-mid teams, multi-host Docker UI can feel dated; K8s support is secondary to Docker
Docker Desktop Docker only, local machine Local dev on your own laptop Not for remote/production hosts; licensing costs for larger companies
Rancher Kubernetes-first (also some Docker) Teams running Kubernetes at scale Heavy, overkill if you’re not really doing K8s
Lens Kubernetes only Developers who live in kubectl/K8s daily Desktop app, not a shared web UI for a team
Dockge Docker Compose stacks only Minimal, fast Compose-stack management No multi-host, no RBAC, much narrower feature set
Yacht / CapRover Docker (Yacht) / PaaS-style deploys (CapRover) Very small setups, simple app hosting Smaller communities, fewer features than Portainer

If your world is plain Docker on one or a handful of hosts and you want a proper multi-user web UI without adopting Kubernetes, Portainer is the default choice — it’s mature, well documented, and the CE tier covers almost everything a small team needs.

If you’re all-in on Kubernetes, Rancher (for cluster/fleet management) or Lens (for a local developer-facing view) will serve you better — Portainer’s K8s support exists but isn’t its strongest suit.

If you just want the absolute minimum to manage a couple of Compose stacks and nothing else, Dockge is lighter and faster to reason about, but you’ll outgrow it the moment you need more than one host or more than one user.

And if you’re only ever working locally on your dev machine, Docker Desktop (or Rancher Desktop / OrbStack on macOS) is simpler than spinning up Portainer for something that never leaves your laptop.

If you’re also running WordPress on Docker, check out wpdockerize, a tool I built to scaffold the whole stack in seconds.

Have fun! 😃

Condividi:XLinkedInFacebookWhatsApp
Diego Betto

Written by

Diego Betto

Co-Founder & CTO at PAPION. Senior full-stack engineer specializing in React, TypeScript, Node.js, and application security.