Portainer Instaleation for Docker Management
Portainer is a lightweight, open-source container management user interface enabling visual management of Docker environments. It simplifies container orchestration, image management, network configuration, and volume management through an intuitive web interface. This guide covers Docker installation, Portainer deployment, agent configuration, SSL setup, and stack management.
Tabla de contenidos
- Prerequisites
- System Requirements
- Docker Instaleation
- Portainer Instaleation
- Nginx Configuration
- SSL Certificate Setup
- Initial Configuration
- Agent Instaleation
- Container Management
- Stack Implementement
- Backup and Updates
- Conclusion
Requisitos previos
Ensure you have:
- Ubuntu 20.04 LTS or later
- Root or sudo access
- A registered domain name
- Minimum 2GB RAM (4GB+ recommended)
- 15GB available disk space
- Basic Linux administration knowledge
Update system:
sudo apt update && sudo apt upgrade -y
Requisitos del sistema
Verifique las especificaciones del sistema:
Check OS version:
cat /etc/os-release
uname -m
Check available resources:
free -h
df -h
Docker Instaleation
Instale Docker:
sudo apt install -y docker.io
Add user to docker group:
sudo usermod -aG docker $USER
newgrp docker
Start Docker:
sudo systemctl start docker
sudo systemctl enable docker
Verifique installation:
docker --version
docker ps
Portainer Instaleation
Cree Portainer volume:
docker volume create portainer_data
Instale Portainer container:
docker run -d \
--name portainer \
--restart always \
-p 9000:9000 \
-p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Verifique Portainer is running:
docker ps | grep portainer
docker logs portainer
Wait for startup (10-15 seconds).
Configuración de Nginx
Instale Nginx:
sudo apt install -y nginx
Cree Nginx configuration:
sudo nano /etc/nginx/sites-available/portainer
Add configuration:
upstream portainer {
server localhost:9000;
}
server {
listen 80;
listen [::]:80;
server_name portainer.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name portainer.example.com;
ssl_certificate /etc/letsencrypt/live/portainer.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/portainer.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 100M;
location / {
proxy_pass http://portainer;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Enable site:
sudo ln -s /etc/nginx/sites-available/portainer /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl start nginx
sudo systemctl enable nginx
Configuración del certificado SSL
Instale Certbot:
sudo apt install -y certbot python3-certbot-nginx
Obtain SSL certificate:
sudo certbot certonly --standalone -d portainer.example.com
Verifique certificate:
sudo openssl x509 -in /etc/letsencrypt/live/portainer.example.com/fullchain.pem -noout -dates
Configure auto-renewal:
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
Configuración inicial
Access Portainer interface:
Navigate to https://portainer.example.com
Complete initial setup:
- Cree admin account with secure password
- Connect to local Docker environment
- Configure settings
Configure admin user:
- Settings → Users
- Cree additional admin users if needed
- Set role permissions
Agent Instaleation
Instale Portainer Agent on remote Docker hosts:
docker run -d \
--name portainer_agent \
--restart always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:latest
Add remote environment to Portainer:
- Portainer → Endpoints
- Click "Add Endpoint"
- Select "Docker"
- Enter agent hostname/IP:9001
- Name the endpoint
Verifique connection:
- Check endpoint status
- Should show "Connected" and Docker version
Container Management
View containers:
- Portainer Dashboard → Containers
- Lists all running containers
Start/stop containers:
- Select container
- Click "Start", "Stop", or "Reinicie"
- View logs in real-time
Cree new container:
- Click "Cree Container"
- Set container name and image
- Configure ports, volumes, environment
- Implemente container
Manage images:
- Dashboard → Images
- Pull new images
- Remove unused images
- View image details
Stack Implementement
Cree Docker Compose stack:
- Dashboard → Stacks
- Click "Add Stack"
- Enter stack name
- Paste Docker Compose YAML
Example stack:
version: '3'
services:
nginx:
image: nginx:latest
restart: always
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
wordpress:
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: password
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Implemente stack:
- Click "Implemente Stack"
- Monitor deployment progress
- View services and containers
Copia de seguridad y actualizaciones
Backup Portainer configuration:
docker exec portainer tar czf /data/portainer-backup-$(date +%Y%m%d).tar.gz /data
docker cp portainer:/data/portainer-backup-*.tar.gz /backups/
Schedule backup script:
sudo nano /usr/local/bin/portainer-backup.sh
Add:
#!/bin/bash
BACKUP_DIR="/backups/portainer"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup Portainer data
docker exec portainer tar czf /data/backup.tar.gz /data
docker cp portainer:/data/backup.tar.gz "$BACKUP_DIR/portainer-$DATE.tar.gz"
# Keep only 30 days
find $BACKUP_DIR -type f -mtime +30 -delete
echo "Backup completed: $DATE"
Make executable:
sudo chmod +x /usr/local/bin/portainer-backup.sh
Schedule daily backups:
sudo crontab -e
Add:
0 2 * * * /usr/local/bin/portainer-backup.sh >> /var/log/portainer-backup.log 2>&1
Update Portainer:
docker stop portainer
docker rm portainer
docker run -d \
--name portainer \
--restart always \
-p 9000:9000 \
-p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Monitor container:
docker logs -f portainer
docker stats portainer
Conclusión
Portainer is now fully installed as a Docker management platform. With Nginx reverse proxy, SSL encryption, and agent support for multiple hosts, you have a comprehensive container management solution. Implemente stacks, manage containers, and monitor your Docker infrastructure through an intuitive interface. Regular backups ensure configuration preservation. Portainer simplifies Docker operations for teams of any size.


