Cách Cài Docker & Portainer Trên VPS TrumVPS - Quản Lý Container Dễ Dàng
Docker đã trở thành công cụ không thể thiếu cho developer và sysadmin. Kết hợp với Portainer — giao diện web quản lý Docker — bạn có thể triển khai và quản lý hàng chục container một cách trực quan. Với VPS TrumVPS chỉ từ 40K/tháng, bạn hoàn toàn có một môi trường Docker ổn định.
Docker Là Gì? Tại Sao Cần Portainer?
Docker là nền tảng container hóa, cho phép bạn đóng gói ứng dụng và các phụ thuộc vào một container độc lập. Container nhẹ hơn máy ảo, khởi động nhanh và dễ dàng di chuyển.
Portainer là giao diện web giúp quản lý Docker thông qua trình duyệt. Bạn có thể tạo, xóa, restart container, xem logs, quản lý volumes và networks — tất cả không cần dòng lệnh phức tạp.
Yêu Cầu
- VPS TrumVPS chạy Ubuntu 22.04 (gói 80K khuyến nghị — 2GB RAM cho nhiều container)
- Đã SSH vào VPS với quyền sudo
- Domain (tùy chọn) để truy cập Portainer từ xa
Bước 1: Cài Đặt Docker Engine
Cập nhật hệ thống và cài các gói cần thiết:
apt update && apt install -y ca-certificates curl
Thêm Docker GPG key và repository:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Cài Docker:
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Khởi động Docker và cho phép chạy cùng hệ thống:
systemctl enable docker --now
Bước 2: Kiểm Tra Docker
docker --version
docker run hello-world
Nếu thấy thông báo "Hello from Docker!" là thành công.
Bước 3: Cài Đặt Portainer
Tạo volume cho Portainer:
docker volume create portainer_data
Chạy Portainer container:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Truy cập Portainer qua: https://your-server-ip:9443
Lần đầu truy cập, bạn sẽ được yêu cầu tạo mật khẩu admin. Sau đó chọn "Local" để quản lý Docker trên chính VPS này.
Bước 4: Mở Port Firewall
ufw allow 9443/tcp
ufw allow 8000/tcp
Bước 5: Triển Khai Ứng Dụng Đầu Tiên
Qua giao diện Portainer, vào App Templates và chọn Nginx, WordPress, MySQL... hoặc dùng Stacks (Docker Compose) để deploy ứng dụng phức tạp.
6 Tính Năng Nổi Bật Của Portainer Bạn Cần Biết
Portainer không chỉ là "Docker GUI đơn thuần". Dưới đây là các tính năng mạnh mẽ giúp bạn quản lý VPS như dân chuyên nghiệp:
Dashboard & Tổng Quan
Trang dashboard hiển thị tổng quan: số container đang chạy/dừng, số images, volumes, networks. Một cái nhìn là biết ngay trạng thái VPS. Bạn có thể xem CPU/RAM usage của từng container, restart container bị treo, xem logs trực tiếp trên browser.
App Templates — Deploy 1 Click
Portainer có sẵn hàng chục template: WordPress, Nginx, MySQL, MongoDB, Redis, Node.js... Chỉ cần chọn → điền vài thông số → deploy. Không cần viết Docker Compose. Rất phù hợp cho người mới hoặc khi cần test nhanh.
Stacks (Docker Compose) — Deploy Ứng Dụng Phức Tạp
Stacks tương đương docker compose nhưng có giao diện web. Bạn paste file YAML → Portainer tự động tạo cả cụm container + network + volume. Hỗ trợ cả Git repository — auto deploy khi code thay đổi.
Registry Management
Portainer kết nối trực tiếp với Docker Hub, GitHub Container Registry (GHCR), GitLab Registry, hoặc private registry. Pull image riêng tư chỉ cần điền credentials — không cần docker login qua CLI.
Container Console (Web Terminal)
Truy cập terminal của container trực tiếp trên browser, không cần SSH. Gõ lệnh, xem output, debug ứng dụng. Cực kỳ tiện khi bạn không có terminal SSH (đang dùng điện thoại, máy tính bảng).
User Management & RBAC
Portainer hỗ trợ tạo nhiều user với quyền khác nhau. Bạn có thể cho khách hàng xem container của họ (không thấy container của người khác), developer chỉ được restart container (không xóa được), admin toàn quyền. Rất hữu ích cho team hoặc agency quản lý VPS cho nhiều khách.
7. Triển Khai Ứng Dụng Thực Tế Với Docker Compose (Stacks)
WordPress + MySQL + Redis Cache
version: '3.8'
services:
db:
image: mysql:8.0
container_name: wp-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: yourpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
volumes:
- db_data:/var/lib/mysql
redis:
image: redis:7-alpine
container_name: wp-redis
restart: always
volumes:
- redis_data:/data
wordpress:
image: wordpress:php8.2-fpm
container_name: wp-app
restart: always
depends_on:
- db
- redis
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
nginx:
image: nginx:alpine
container_name: wp-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- wp_data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- wordpress
volumes:
db_data:
redis_data:
wp_data:
Chỉ cần paste YAML này vào Portainer → Stacks → Deploy. 30 giây sau bạn có WordPress + MySQL + Redis đầy đủ.
Node.js App + Nginx Reverse Proxy
version: '3.8'
services:
app:
image: node:20-alpine
container_name: node-app
working_dir: /app
command: sh -c "npm install && node index.js"
volumes:
- ./app:/app
environment:
NODE_ENV: production
PORT: 3000
restart: always
nginx:
image: nginx:alpine
container_name: node-nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
restart: always
8. Portainer Edge Agent — Quản Lý Nhiều VPS Từ Một Nơi
Nếu bạn có nhiều VPS (5-10 server), cài Portainer Agent trên mỗi VPS và quản lý tất cả từ một Portainer Server duy nhất:
# Trên mỗi VPS con (Edge Agent):
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
--restart always \
--name portainer_agent \
portainer/agent:latest
Sau đó add endpoint vào Portainer chính. Bạn có thể: xem tổng quan tất cả VPS trên 1 dashboard, kéo thả container giữa các VPS, deploy đồng loạt stack lên nhiều server. Agency MMO quản lý 20-30 VPS cho khách hàng dùng cách này rất hiệu quả.
9. Docker & Portainer Security Best Practices
- Không chạy container với user root: Thêm
user: "1000:1000"trong compose hoặc dùngUSERtrong Dockerfile - Giới hạn tài nguyên container: Thêm
deploy.resources.limitsđể không container nào chiếm hết RAM/CPU:
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
- Đổi port Portainer mặc định: 9443 là port mặc định — nên đổi sang port cao (>10000) để tránh bot scan
- Bật 2FA cho Portainer: Vào Settings → Authentication → Enable 2FA. Rất quan trọng nếu Portainer public ra internet
- Update thường xuyên:
docker pull portainer/portainer-ce:latest && docker restart portainer. Container cũng nên cập nhật image định kỳ (dùng Watchtower hoặc Portainer built-in updater) - Không expose Docker socket: Chỉ mount
/var/run/docker.sockcho Portainer. Tuyệt đối không mount cho container public (web app, API...) - Dùng network riêng: Tạo internal network cho các container liên quan, không dùng default bridge
10. So Sánh Portainer vs Công Cụ Khác
| Công cụ | Giao diện | Multi-host | RBAC | Giá | Phù hợp |
|---|---|---|---|---|---|
| Portainer CE | Web GUI trực quan | ✅ (Agent) | ✅ Cơ bản | Miễn phí | Cá nhân, team nhỏ |
| Portainer BE | Web GUI | ✅ | ✅ Nâng cao | Có phí | Enterprise |
| Docker CLI | Terminal | ❌ | ❌ | Miễn phí | Dev chuyên nghiệp |
| DockGE | Web GUI đơn giản | ❌ | ❌ | Miễn phí | Cá nhân đơn giản |
| Rancher | Web GUI | ✅ (K8s) | ✅ Mạnh | Miễn phí | Kubernetes cluster |
Kết luận: Portainer CE là lựa chọn tốt nhất cho 95% người dùng VPS cá nhân. Giao diện thân thiện, đầy đủ tính năng, miễn phí. Rancher chỉ cần khi bạn chạy Kubernetes cluster (5+ node).
Câu Hỏi Thường Gặp (FAQ)
VPS 40K (1GB RAM) có chạy được Docker + Portainer không?
Có. Docker engine dùng ~200MB RAM, Portainer dùng ~50MB RAM. Còn lại ~750MB cho container. Chạy được 3-5 container nhẹ (Nginx, Redis, Node.js app nhỏ). Nếu cần nhiều container hơn, nâng lên gói 80K (2GB RAM).
Portainer có thay thế hoàn toàn Docker CLI không?
90% tác vụ có thể làm qua Portainer. Nhưng một số tác vụ nâng cao (build image custom, debug network sâu) vẫn cần CLI. Lời khuyên: dùng Portainer cho quản lý hàng ngày, CLI cho troubleshooting chuyên sâu.
Có nên public Portainer ra internet không?
Chỉ nên nếu bật 2FA + đổi port mặc định + dùng SSL (mặc định Portainer dùng self-signed cert trên port 9443). Tốt hơn: truy cập qua VPN (WireGuard/Tailscale) hoặc SSH tunnel: ssh -L 9443:localhost:9443 user@vps.
Cần VPS mạnh để chạy Docker?
TrumVPS - CPU Platinum, NVMe SSD - Hoàn hảo cho Docker & Container!
Mã giảm giá: 42089QPI03TI (-9%)
THUÊ VPS NGAY