Portainer Docker Management UI ฉบับสมบูรณ์ 2026

portainer docker management 2026
Portainer Docker Management UI ฉบับสมบูรณ์ 2026

Docker เป็นเครื่องมือที่ทรงพลังแต่การจัดการผ่าน command line อย่างเดียวอาจไม่เหมาะสำหรับทุกู้คืนในทีมโดยเฉพาะ developer ที่ต้องการ deploy application หรือ QA ที่ต้องการดู log ของ container การจำคำสั่ง docker compose, docker logs, docker exec ทุกครั้งเป็นอุปสรรคที่ไม่จำเป็น Portainer คือ solution ที่ให้ web-based management UI สำหรับ Docker ที่สวยงามใช้งานง่ายและฟรีครับ

วิดีโอประกอบการเรียนรู้ | YouTube @icafefx

Portainer Community Edition ให้คุณจัดการ Docker containers, images, volumes, networks ทั้งหมดผ่าน browser deploy application ด้วย Docker Compose stack, monitor resource usage, ดู container logs แบบ real-time และจัดการ multiple Docker hosts จากที่เดียวบทความนี้จะพาคุณติดตั้ง Portainer ตั้งแต่เริ่มต้นจนถึงการใช้งานในระดับ production

สารบัญ 1. ภาพรวม Portainer 2. ติดตั้ง Portainer CE 3. การใช้งานเบื้องต้น 4. Stack Deployment (Docker Compose) 5. App Templates 6. Multi-Environment Management 7. Registry Management 8. User Management และ RBAC 9. Monitoring และ Logs 10. Backup และ Restore 11. Reverse Proxy + SSL 12. Troubleshooting 13. FAQ 14. สรุป

1. ภาพรวม Portainer

Portainer เป็น lightweight container management platform ที่ทำงานเป็น Docker container ตัวมันเองกิน resource น้อยมาก RAM แค่ 50-100MB เชื่อมต่อกับ Docker socket หรือ Docker API เพื่อจัดการ container ทั้งหมดรองรับ Docker standalone, Docker Swarm และ Kubernetes

จุดเด่นของ Portainer เมื่อเทียบกับ CLI คือทุกู้คืนในทีมเข้าถึงได้ผ่าน browser ไม่ต้อง SSH เข้า server มี visual interface ที่เข้าใจง่ายมี role-based access control ให้ developer จัดการได้เฉพาะ container ของตัวเองมี audit log ว่าใครทำอะไรเมื่อไหร่และมี template สำเร็จรูปสำหรับ deploy application ยอดนิยมได้ด้วยคลิกเดียว

Portainer กับ alternatives

เมื่อเทียบกับ Yacht ที่เป็น Docker UI อีกตัว Portainer มี feature ครบกว่ามากรองรับ Swarm และ K8s มี template และ stack management ส่วน Cockpit ที่เราเคยพูดถึงมี container module แต่ไม่ได้ออกแบบมาสำหรับ container management โดยเฉพาะสำหรับ Kubernetes scale ใหญ่ Rancher เป็นตัวเลือกที่ดีกว่าแต่สำหรับ Docker standalone Portainer ดีที่สุดครับ

2. ติดตั้ง Portainer CE

# ติดตั้ง Docker (ถ้ายังไม่มี)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

# สร้าง volume สำหรับ Portainer data
docker volume create portainer_data

# ติดตั้ง Portainer CE
docker run -d \
 --name portainer \
 --restart=always \
 -p 8000:8000 \
 -p 9443:9443 \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v portainer_data:/data \
 portainer/portainer-ce:latest

# ตรวจสอบ
docker ps | grep portainer
# portainer/portainer-ce:latest ... Up 5 seconds

เปิด browser ไปที่ https://YOUR_SERVER_IP:9443 จะเห็นหน้า setup ให้สร้าง admin account ใส่ username และ password ที่ต้องการจากนั้นเลือก environment type เป็น Docker แล้วคลิก Connect Portainer จะเชื่อมต่อกับ Docker socket อัตโนมัติเข้า dashboard ได้เลยครับ

ติดตั้งด้วย Docker Compose (แนะนำ)

# docker-compose.yml
version: "3.8"
services:
 portainer:
 image: portainer/portainer-ce:latest
 container_name: portainer
 restart: always
 ports:
 - "8000:8000"
 - "9443:9443"
 volumes:
 - /var/run/docker.sock:/var/run/docker.sock
 - portainer_data:/data
 environment:
 - TZ=Asia/Bangkok
 security_opt:
 - no-new-privileges:true

volumes:
 portainer_data:
 driver: local
docker compose up -d
docker compose logs -f portainer

3. การใช้งานเบื้องต้น

หลังจาก login เข้า Portainer จะเห็น Dashboard ที่แสดงภาพรวมของ Docker environment ทั้ง running containers, images, volumes, networks ครบทุกอย่างสามารถคลิกเข้าไปจัดการแต่ละส่วนได้ทันที

จัดการ Containers

ไปที่เมนู Containers จะเห็นรายการ container ทั้งหมดพร้อมสถานะสามารถ start, stop, restart, kill, remove container ได้ด้วยคลิกเดียวคลิกที่ชื่อ container เพื่อดูรายละเอียด resource usage, environment variables, mounted volumes, network settings ทุกอย่างที่ docker inspect แสดงได้ Portainer แสดงให้ในรูปแบบที่อ่านง่ายกว่ามากครับ

สร้าง Container ใหม่

# ผ่าน Portainer UI:
# 1. คลิก "Add container"
# 2. กรอก Name: my-nginx
# 3. กรอก Image: nginx:alpine
# 4. Port mapping: 8080 -> 80
# 5. Volume: /data/nginx -> /usr/share/nginx/html
# 6. Restart policy: Always
# 7. คลิก "Deploy the container"

# เทียบเท่ากับ CLI:
docker run -d \
 --name my-nginx \
 --restart=always \
 -p 8080:80 \
 -v /data/nginx:/usr/share/nginx/html \
 nginx:alpine

Console / Exec

คลิก Console ใน container detail เพื่อเปิด terminal ใน browser เลือก shell ที่ต้องการ (/bin/bash หรือ /bin/sh) แล้วใช้งานได้เลยไม่ต้อง SSH เข้า server แล้ว docker exec เองสะดวกมากสำหรับ debug production issues

4. Stack Deployment (Docker Compose)

Stacks เป็น feature ที่ทรงพลังที่สุดของ Portainer ให้คุณ deploy Docker Compose file ผ่าน web UI ไม่ต้อง SSH เข้า server ไม่ต้อง copy file ไปวางแค่ paste docker-compose.yml แล้วคลิก Deploy

# ตัวอย่าง Stack: WordPress + MariaDB
# วาง YAML นี้ใน Portainer Stack editor

version: "3.8"
services:
 wordpress:
 image: wordpress:latest
 restart: always
 ports:
 - "8888:80"
 environment:
 WORDPRESS_DB_HOST: db
 WORDPRESS_DB_USER: wp_user
 WORDPRESS_DB_PASSWORD: WpP@ss2026
 WORDPRESS_DB_NAME: wordpress
 volumes:
 - wp_data:/var/www/html
 depends_on:
 - db

 db:
 image: mariadb:11
 restart: always
 environment:
 MYSQL_DATABASE: wordpress
 MYSQL_USER: wp_user
 MYSQL_PASSWORD: WpP@ss2026
 MYSQL_ROOT_PASSWORD: R00tP@ss2026
 volumes:
 - db_data:/var/lib/mysql

volumes:
 wp_data:
 db_data:

หลังจาก deploy stack คุณจะเห็นทุก container ของ stack นั้นจัดกลุ่มรวมกันสามารถ start/stop ทั้ง stack ได้ด้วยคลิกเดียว update stack ด้วยการแก้ YAML แล้วคลิก Update ง่ายมากครับยังรองรับ Git repository integration ดึง docker-compose.yml จาก Git repo แล้ว auto-deploy เมื่อมี push ใหม่ได้ด้วย

5. App Templates

Portainer มี App Templates สำเร็จรูปให้ deploy application ยอดนิยมได้ด้วยคลิกเดียวเช่น WordPress, PostgreSQL, Redis, Nginx, MariaDB, MongoDB, Elasticsearch, GitLab CE, Grafana, Prometheus และอีกหลายสิบ application คลิกเลือก template กรอก parameters แล้ว Deploy ได้เลย

# สร้าง Custom App Template
# ไปที่ Settings > App Templates
# เพิ่ม URL ของ template file:
# https://raw.githubusercontent.com/your-org/templates/main/templates.json

# ตัวอย่าง template JSON
{
 "version": "2"
 "templates": [
 {
 "type": 3
 "title": "SiamCafe Blog Stack"
 "description": "Full blog stack with Nginx + PHP + SQLite"
 "categories": ["webserver"]
 "platform": "linux"
 "repository": {
 "url": "https://github.com/siamcafe/blog-stack"
 "stackfile": "docker-compose.yml"
 }
 }
 ]
}

Custom templates เป็นวิธีที่ดีที่สุดในการ standardize deployment ในองค์กรสร้าง template สำหรับ application stack ที่ใช้บ่อย developer คลิก deploy ได้เลยโดยไม่ต้องเขียน docker-compose.yml เองลดความผิดพลาดและ ensure consistency

6. Multi-Environment Management

Portainer สามารถจัดการ Docker หลาย host จากที่เดียวต่อ development server, staging server และ production server ทั้งหมดใน Portainer เดียวสลับ environment ได้ด้วยคลิกเดียว

# วิธีที่ 1: Portainer Agent (แนะนำ)
# ติดตั้ง Agent บน remote host
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

# จากนั้นใน Portainer UI:
# Settings > Environments > Add environment
# เลือก Agent แล้วใส่ IP:9001 ของ remote host
# วิธีที่ 2: Docker API (ต้องเปิด TCP)
# บน remote host แก้ /etc/docker/daemon.json
{
 "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"]
 "tls": true
 "tlscacert": "/etc/docker/tls/ca.pem"
 "tlscert": "/etc/docker/tls/server-cert.pem"
 "tlskey": "/etc/docker/tls/server-key.pem"
 "tlsverify": true
}

sudo systemctl restart docker

# ใน Portainer: Add environment > Docker API
# ใส่ IP:2376 + upload TLS certificates

แนะนำใช้ Agent เพราะ setup ง่ายกว่าปลอดภัยกว่าไม่ต้องเปิด Docker API port และ Agent ให้ feature เพิ่มเช่น browse host filesystem, ดู container stats ที่ละเอียดกว่า API mode

7. Registry Management

# เพิ่ม private registry ใน Portainer
# Settings > Registries > Add registry

# Docker Hub (default)
# Registry type: DockerHub
# Username: your-dockerhub-user
# Password: your-access-token

# Private registry (Harbor, GitLab, etc.)
# Registry type: Custom registry
# Registry URL: https://registry.example.com
# Authentication: username/password

# AWS ECR
# Registry type: AWS ECR
# Region: ap-southeast-1
# Access key + Secret key

เมื่อเพิ่ม registry แล้วสามารถ pull image จาก private registry ได้ตรงใน Portainer UI ไม่ต้อง docker login บน server ทุกเครื่องทำให้ deploy private images ง่ายขึ้นมากโดยเฉพาะเมื่อมี multiple Docker hosts

8. User Management และ RBAC

Portainer CE มี basic RBAC ที่แบ่ง user เป็น Administrator กับ Standard user โดย admin จัดการได้ทุกอย่าง standard user จัดการได้เฉพาะ resource ที่ได้รับสิทธิ์

# สร้าง User
# Settings > Users > Add user
# Username: developer1
# Password: DevP@ss2026
# Role: Standard user

# สร้าง Team
# Settings > Teams > Add team
# Team name: Frontend Team
# Members: developer1, developer2

# กำหนดสิทธิ์ Environment
# Settings > Environments > manage access
# Frontend Team: Read/Write access to Development only
# DevOps Team: Read/Write access to all environments

สำหรับองค์กรที่ต้องการ RBAC ละเอียดมากขึ้นเช่นกำหนดสิทธิ์ระดับ container, stack หรือ registry ต้องใช้ Portainer Business Edition แต่สำหรับทีมส่วนใหญ่ CE ก็เพียงพอครับ

9. Monitoring และ Logs

Portainer แสดง resource usage ของทุก container แบบ real-time ทั้ง CPU, memory, network I/O และ disk I/O คลิกที่ container เลือก Stats จะเห็น graph ที่อัพเดทอัตโนมัติช่วยให้เห็นว่า container ไหนักิน resource มากผิดปกติได้ทันที

# Container Logs ผ่าน Portainer UI
# คลิก container > Logs
# - Auto-refresh: เปิด/ปิดได้
# - Timestamps: แสดงเวลาทุกบรรทัด
# - Search/Filter: ค้นหา keyword ใน log
# - Download: export log เป็นไฟล์

# เทียบกับ CLI:
docker logs -f --tail 100 --timestamps my-container
docker logs --since 1h my-container | grep ERROR

สิ่งที่ Portainer ทำได้ดีกว่า CLI คือ log viewer ที่ search ได้, highlight keyword ได้และ scroll ได้สะดวกไม่ต้อง pipe ผ่าน grep หลายชั้นสำหรับ developer ที่ต้อง debug production issue สามารถเปิด log ของหลาย container พร้อมกันใน tab ต่างๆดู log ข้ามกันได้ง่ายมากครับ

Resource Monitoring

Dashboard ของ Portainer แสดง overview ของทั้ง environment จำนวน running containers, stopped containers, images ที่ใช้อยู่, total volume size และ network count ช่วยให้ admin เห็นภาพรวมได้ทันทีโดยไม่ต้องรัน docker stats หรือ docker system df สำหรับ monitoring ที่ละเอียดกว่านี้แนะนำใช้ร่วมกับ Prometheus และ Grafana

10. Backup และ Restore

# Backup Portainer data
docker stop portainer
docker run --rm \
 -v portainer_data:/data \
 -v $(pwd):/backup \
 alpine tar czf /backup/portainer-backup-$(date +%Y%m%d).tar.gz -C /data .
docker start portainer

# Restore
docker stop portainer
docker run --rm \
 -v portainer_data:/data \
 -v $(pwd):/backup \
 alpine sh -c "rm -rf /data/* && tar xzf /backup/portainer-backup-20260222.tar.gz -C /data"
docker start portainer
# Automatic backup script
#!/bin/bash
BACKUP_DIR="/opt/backups/portainer"
KEEP_DAYS=30
mkdir -p $BACKUP_DIR

docker run --rm \
 -v portainer_data:/data \
 -v $BACKUP_DIR:/backup \
 alpine tar czf /backup/portainer-$(date +%Y%m%d-%H%M).tar.gz -C /data .

find $BACKUP_DIR -name "portainer-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "Backup done: $(ls -la $BACKUP_DIR/*.tar.gz | tail -1)"

# เพิ่มใน crontab
# 0 2 * * * /opt/scripts/backup-portainer.sh >> /var/log/portainer-backup.log 2>&1

Portainer เก็บ configuration ทั้งหมดใน volume เดียวทำให้ backup และ restore ง่ายมากข้อมูลที่อยู่ใน volume ได้แก่ user accounts, environment settings, stack configurations, custom templates และ edge configurations ทั้งหมด backup ทุกวันเพื่อป้องกัน data loss

11. Reverse Proxy + SSL

ไม่ควรเปิด Portainer port 9443 ให้ public access โดยตรงใช้ reverse proxy ด้วย Nginx หรือ Traefik ใส่ SSL certificate และจำกัด IP ที่เข้าถึงได้

# Nginx reverse proxy สำหรับ Portainer
# /etc/nginx/sites-available/portainer.conf
server {
 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;

 # จำกัด IP (optional)
 # allow 10.0.0.0/8;
 # deny all;

 location / {
 proxy_pass https://127.0.0.1:9443;
 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;
 }
}
# หรือใช้ Traefik กับ Docker labels
services:
 portainer:
 image: portainer/portainer-ce:latest
 labels:
 - "traefik.enable=true"
 - "traefik.http.routers.portainer.rule=Host(`portainer.example.com`)"
 - "traefik.http.routers.portainer.tls.certresolver=letsencrypt"
 - "traefik.http.services.portainer.loadbalancer.server.port=9443"
 - "traefik.http.services.portainer.loadbalancer.server.scheme=https"

Portainer ไม่แสดง containers

ตรวจสอบว่า Docker socket mount ถูกต้อง -v /var/run/docker.sock:/var/run/docker.sock ถ้าใช้ rootless Docker path จะต่างออกไปตรวจด้วย docker info ว่า socket อยู่ที่ไหนใช้ path นั้นแทนครับ

Agent เชื่อมต่อไม่ได้

ตรวจ firewall ว่าเปิด port 9001 แล้วตรวจว่า agent container running อยู่ด้วย docker ps | grep agent และตรวจ network connectivity ด้วย telnet AGENT_IP 9001 ถ้า agent อยู่หลัง NAT ให้ใช้ Edge Agent แทนที่ใช้ outbound connection

Stack deploy ล้มเหลว

ดู error message ใน Portainer UI ส่วนใหญ่เกิดจาก YAML syntax error, image pull failed หรือ port conflict ตรวจว่า image name ถูกต้อง registry accessible และ port ไม่ซ้ำกับ container อื่นลอง validate YAML ก่อน deploy

Portainer ใช้ memory มากผิดปกติ

ปกติ Portainer ใช้ RAM แค่ 50-100MB ถ้าสูงกว่านั้นอาจเกิดจากมี environment จำนวนมากที่ poll status อยู่ตลอดลด polling interval ใน Settings หรือ remove environment ที่ไม่ใช้แล้วถ้ายังสูงลอง restart container

Portainer CE กับ Business Edition ต่างกันอย่างไร?

Portainer CE (Community Edition) เป็น open source ฟรีมี feature พื้นฐานครบจัดการ Docker, Swarm, Kubernetes ได้ส่วน Business Edition มี RBAC ละเอียดกว่า, registry management ที่ดีกว่า, GitOps deployment และ official support สำหรับทีมส่วนใหญ่ CE เพียงพอครับ

Portainer รองรับ Kubernetes ไหม?

รองรับครับ Portainer จัดการ Kubernetes cluster ได้ทั้ง deploy applications, manage namespaces, view logs, exec into pods คล้าย Rancher แต่ lightweight กว่ามากเหมาะสำหรับทีมเล็กถึงกลางที่ไม่ต้องการ complexity ของ Rancher

Portainer ใช้ resource มากไหม?

Portainer เบามากใช้ RAM แค่ 50-100MB และ CPU น้อยมากเพราะเป็นแค่ web UI ที่เรียก Docker API ไม่ได้ run workload เองติดตั้งบน server ที่มี Docker อยู่แล้วได้เลยโดยไม่กระทบ performance ของ application containers

Portainer ปลอดภัยไหม?

Portainer มี authentication, RBAC, HTTPS support และ audit log ในตัวแต่ต้องตั้งค่าให้ถูกต้องไม่ควรเปิด port 9443 ให้ public access ใช้ reverse proxy ด้วย Nginx หรือ Traefik ใส่ SSL certificate จำกัด IP ที่เข้าถึงได้และเปลี่ยน admin password เป็น strong password

Portainer กับ Rancher ตัวไหนดีกว่า?

Rancher เหมาะสำหรับ Kubernetes cluster ขนาดใหญ่มี feature ครบทั้ง cluster provisioning, fleet management ส่วน Portainer เหมาะสำหรับ Docker standalone และ small Kubernetes เบากว่า setup ง่ายกว่าถ้าใช้ Docker เป็นหลักเลือก Portainer ถ้า K8s เป็นหลักเลือก Rancher

สรุป

Portainer เป็น Docker management UI ที่ดีที่สุดในโลก open source ให้ทุกู้คืนในทีมจัดการ containers ได้ผ่าน browser ไม่ต้อง SSH ไม่ต้องจำ CLI commands ด้วย stack deployment, app templates, multi-environment management และ RBAC ทำให้ Docker operations เป็นเรื่องง่ายสำหรับทั้ง developer และ operations team

ติดตั้ง Portainer ใช้เวลาไม่ถึง 5 นาทีแค่ docker run คำสั่งเดียวได้ management UI ที่ครบทุก feature ทันทีลงทุนเวลาแค่เล็กน้อยแต่ได้ productivity ที่เพิ่มขึ้นมหาศาลโดยเฉพาะเมื่อทีมโตขึ้นและมี Docker hosts หลายเครื่อง Portainer จะเป็น single pane of glass ที่คุณขาดไม่ได้ครับ