Skip to main content
[ PIER ]

Portainer

The web UI for Docker, Docker Swarm, and Kubernetes.

Service #docker#management#ui#containers#devops

Portainer is a lightweight web UI for managing Docker containers, Docker Swarm clusters, and Kubernetes namespaces. It gives developers and ops teams a polished GUI for inspecting running containers, viewing logs, managing volumes and networks, deploying stacks — without needing to memorize docker / kubectl commands.

Deploy with Pier

  1. 1 Open the Pier dashboard and click Add service.
  2. 2 Pick Portainer from the template list.
  3. 3 Choose the version, set a service name, and Pier provisions the container, storage, and ports automatically.
  4. 4 Attach a domain if you want HTTPS. Traefik auto-provisions the Let's Encrypt certificate.

What is Portainer?

Portainer is the world’s most popular web UI for Docker, Docker Swarm, and Kubernetes. Started in 2016 as a side project to give the Docker CLI a friendly face, it’s grown into a polished, production-ready GUI used by hundreds of thousands of teams to manage container deployments without memorizing every docker/kubectl flag.

It connects to the local Docker socket (or remote Docker / Swarm / K8s endpoints) and gives you a clickable view of containers, images, volumes, networks, builds, stacks, deployments. You can stop a misbehaving container, exec a shell into it, tail its logs, or redeploy a whole Docker Compose stack — all from the browser.

How Pier deploys it

Pier uses the official portainer/portainer-ce Docker image (Community Edition). The container mounts /var/run/docker.sock from the host (so Portainer can see and manage all containers on the same Docker engine) and /data as a persistent volume for its database and config.

Default ports are 9000/tcp (HTTP UI) and 9443/tcp (built-in HTTPS). Through Pier, attach a domain — Traefik handles HTTPS termination on a clean URL and proxies to the internal 9000.

First login: the very first visit to the UI prompts you to create the admin user. After that, login is at /.

When NOT to use Portainer

Pier itself covers most of Portainer’s day-to-day use cases (service templates, HTTPS, backups, logs, env management). Use Portainer alongside Pier when you want lower-level Docker access — inspect arbitrary containers Pier didn’t create, manage Swarm services, debug network interfaces, attach to logs of system containers. If your use case fits fully inside Pier’s managed templates, you might not need Portainer at all.

Key features

Full Docker UI

View running containers, start/stop/restart, exec into them, view real-time logs, browse images, networks, volumes, builds. Anything you'd do from `docker` CLI.

Docker Compose / Stacks

Deploy multi-container apps from Docker Compose files via the UI. Edit YAML in the browser; redeploy with one click. Webhook support for CI auto-deploys.

Multi-environment dashboard

One Portainer instance manages many Docker hosts, Swarm clusters, and Kubernetes namespaces. Group endpoints by tag; switch between them with a dropdown.

User access & RBAC

Built-in users + teams + roles. Restrict access per environment, per resource type, per endpoint. LDAP, OAuth (Google, GitHub, GitLab, Azure AD), and OpenID Connect supported.

App templates

One-click deployments from a catalog of pre-defined templates. Add your own templates JSON for org-internal deployments.

Edge Compute support

Manage remote Docker hosts that initiate the connection (NAT, firewall friendly). Useful for IoT fleet deployments or DMZ servers.

Use cases

Developer self-service

Give devs a UI to start/stop their own staging containers without giving them sudo on the host. Restrict via RBAC.

Multi-host Docker fleet management

One Portainer manages your dev, staging, and prod Docker hosts. Tag endpoints by environment; deploy stacks once, target multiple hosts.

Kubernetes lite UI

For small/medium K8s clusters, Portainer's UI is simpler than Lens or k9s. Deploy from manifests or Helm charts via the UI.

Customer-facing app UI

Some MSPs use Portainer's UI (white-labelled in Business Edition) as the app deployment surface for customers — a "PaaS lite."

Container troubleshooting

Inspect a running container's env, volumes, network attachments, logs, and exec a shell — all in one screen during incident response.

Code examples

Add a Docker endpoint via API bash
curl -X POST \
  -H "X-API-Key: $PORTAINER_API_KEY" \
  -F 'Name=prod-docker' \
  -F 'EndpointCreationType=1' \
  -F 'URL=tcp://prod-docker:2376' \
  -F 'TLS=true' \
  -F '[email protected]' \
  https://portainer.example.com/api/endpoints
Deploy a stack via API bash
curl -X POST \
  -H "X-API-Key: $PORTAINER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "myapp",
    "stackFileContent": "version: \"3.8\"\nservices:\n  web:\n    image: nginx",
    "swarmID": "abc123",
    "fromAppTemplate": false
  }' \
  "https://portainer.example.com/api/stacks?type=1&method=string&endpointId=1"
Webhook redeploy on Git push bash
# CI pipeline (.github/workflows/deploy.yml)
- name: Trigger Portainer redeploy
  run: |
    curl -X POST $PORTAINER_REDEPLOY_WEBHOOK
Container exec via API bash
curl -X POST \
  -H "X-API-Key: $PORTAINER_API_KEY" \
  -d '{"AttachStdin":true,"AttachStdout":true,"Cmd":["sh"],"Tty":true}' \
  https://portainer.example.com/api/endpoints/1/docker/containers/<id>/exec

How it compares

vs Docker CLI / docker-compose CLI is the most powerful and scriptable but has a learning curve. Portainer is the UI version — slower for power users, faster for ad-hoc tasks and team members who don't live in the terminal.
vs Pier (this platform) Pier is a higher-level PaaS — opinionated deployments, automatic SSL, backups, service templates. Portainer is a lower-level Docker UI — full Docker access, no built-in HTTPS or backups. Many users run both — Pier for managed services, Portainer for "I just need to look at this container."
vs Rancher Rancher targets Kubernetes-at-scale. Portainer is simpler for Docker-first workflows. For pure K8s, Rancher or OpenLens are richer; for Docker + light K8s, Portainer wins on simplicity.
vs Yacht, Dockge Lighter Docker UIs focused on Compose stacks. Portainer is heavier but covers Swarm, Kubernetes, RBAC, multi-host — things lighter alternatives skip.

Frequently asked questions

CE or BE?
Pier deploys Portainer Community Edition (CE). The Business Edition adds RBAC enhancements, edge compute features, audit logs, and support — but is a separate paid product not bundled in this template.
How does Portainer connect to Docker?
Mount `/var/run/docker.sock` into the Portainer container (Pier does this automatically). Portainer talks to the local Docker daemon. For remote hosts, add TLS-secured Docker socket endpoints via the UI.
First-time setup?
On first launch you create the admin user via the UI. Default port is 9000/tcp (HTTP) or 9443/tcp (HTTPS). Pier exposes both; attach a domain for clean HTTPS via Traefik.
Can I manage Kubernetes too?
Yes — connect to any K8s cluster via kubeconfig in the UI. Portainer's K8s UI is solid for namespaces, deployments, ingresses, configmaps, secrets.
Volume?
Pier mounts `/data` as the persistent volume — holds Portainer's config + user database + endpoint definitions.
How do I back up?
Portainer's Settings → Backup gives you a one-click encrypted backup ZIP. Restore on a fresh install. Schedule periodically.
Authentication / SSO?
Local accounts by default. Configure LDAP, OAuth (Google, GitHub, GitLab, Azure AD, custom OIDC) in Settings → Authentication.

Related services

Deploy on your VPS

Portainer is a lightweight web UI for managing Docker containers, Docker Swarm clusters, and Kubernetes namespaces. It gives developers and ops teams a polished GUI for inspecting running containers, viewing logs, managing volumes and networks, deploying stacks — without needing to memorize docker / kubectl commands.

Deploy this service →