Portainer: Docker Management via Web
Portainer is a web GUI for Docker that lets you manage containers, images, volumes, networks and docker-compose stacks without using the terminal. Ideal for those who don't want to memorize Docker commands.
Installation
# Create a volume for Portainer data
docker volume create portainer_data
# Start Portainer (Community Edition - free)
docker run -d \
--name portainer \
--restart always \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Access at http://SERVER_IP:9000: on first run create the admin user.
Don't expose port 9000 on the internet without protection. Use a reverse proxy Nginx with SSL or access via SSH tunnel: ssh -L 9000:localhost:9000 root@SERVER_IP
With docker-compose
# portainer/docker-compose.yml
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
docker compose up -d
Nginx reverse proxy with SSL
server {
listen 443 ssl;
server_name portainer.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/portainer.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/portainer.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Main features
Containers: start, stop, restart, remove, view logs and interactive console.
Stacks: load a docker-compose.yml directly from the web interface and run it.
Images: download, remove, inspect Docker images.
Volumes: create, remove, view volumes.
Networks: manage Docker networks.
Environment: connect multiple remote Docker servers from a single Portainer instance.
Update Portainer
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
# Re-run the installation command: data is in the volume
docker run -d \
--name portainer \
--restart always \
-p 9000:9000 -p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Related articles
