Portainer cho người mới: quản lý Docker trực quan trong 30 phút
Docker mạnh. Nhưng CLI dễ làm người mới “ngợp”: docker ps, docker logs, docker exec, docker compose up, network, volume, image, container… nhiều khái niệm, nhiều lệnh. Portainer giải quyết đúng điểm đau đó: giao diện web trực quan để quản lý Docker.
Trong 30 phút, bạn có thể cài Portainer, kết nối Docker local, xem container, đọc log, mở terminal, quản lý volume/network, deploy app bằng Compose stack. Bài này → hướng dẫn thực tế, ít lý thuyết thừa, đủ để dùng ngay.
Portainer là gì?
Portainer là UI quản trị container. Nó giúp bạn quản lý:
– Container: start/stop/restart/remove, xem log, stats, console.
– Image: pull, inspect, remove.
– Volume: tạo, xóa, xem volume đang dùng.
– Network: tạo bridge network, gán container.
– Stack: deploy bằng Docker Compose.
– Environment: Docker local, remote Docker, Docker Swarm, Kubernetes.
– User/RBAC: phân quyền, team, endpoint access. Bản Business mạnh hơn.
Nói ngắn: Docker CLI → thao tác dòng lệnh. Portainer → thao tác qua web UI.
Khi nào nên dùng Portainer?
Portainer rất hợp nếu bạn:
– Mới học Docker, muốn nhìn thấy container/image/volume rõ ràng.
– Chạy homelab: NAS, VPS, mini PC, Raspberry Pi.
– Quản lý nhiều app self-hosted: Nginx Proxy Manager, PostgreSQL, Redis, Uptime Kuma, n8n, Nextcloud.
– Muốn deploy nhanh bằng Docker Compose.
– Cần xem log, restart service, inspect config mà không SSH nhiều.
Không nhất thiết thay CLI hoàn toàn. Cách tốt nhất: Portainer để quan sát/quản trị nhanh, CLI để debug sâu/tự động hóa.
Chuẩn bị trước khi cài
Bạn cần:
– Máy Linux/VPS đã cài Docker.
– Quyền sudo.
– Port 9443 mở nếu truy cập từ xa.
– Docker đang chạy.
– 9443 → giao diện web HTTPS.
– 8000 → agent/edge tunnel, thường chưa cần nhưng giữ cũng được.
– /var/run/docker.sock → cho Portainer điều khiển Docker host.
– portainer_data → lưu user, config, endpoint.
– --restart=always → tự chạy lại sau reboot.
Truy cập:
https://IP_MAY_CHU:9443
Trình duyệt có thể cảnh báo chứng chỉ tự ký. Chọn tiếp tục nếu là server của bạn.
Thiết lập lần đầu
Mở Portainer → tạo tài khoản admin.
Lưu ý bảo mật:
– Dùng mật khẩu mạnh.
– Không đặt Portainer public internet nếu chưa có bảo vệ.
– Ưu tiên đặt sau VPN, Tailscale, Cloudflare Tunnel, reverse proxy có auth.
– Ai có quyền admin Portainer gần như có quyền root trên Docker host.
Sau khi tạo admin, Portainer hỏi môi trường quản lý. Chọn:
Get Started hoặc Docker local.
Portainer sẽ kết nối Docker engine qua socket mount.
Làm quen Dashboard
Vào Home → local environment. Bạn sẽ thấy dashboard gồm:
– Stacks: app deploy bằng Compose.
– Containers: container đang chạy/dừng.
– Images: image đã pull.
– Volumes: dữ liệu bền vững.
– Networks: mạng Docker.
– Events: sự kiện Docker.
– Host: thông tin máy chủ.
Đây là nơi người mới bắt đầu hiểu Docker nhanh hơn: image nào tạo container nào, container dùng volume nào, network nào, port nào đang expose.
Nghĩa là port đã bị app khác dùng. Fix: đổi host port hoặc stop container đang chiếm port.
Console
Mở shell bên trong container.
Thường dùng:
/bin/sh
Hoặc nếu image có bash:
/bin/bash
Dùng để kiểm tra file, env, network, package. Nhưng nhớ: sửa tay trong container thường mất khi container recreate. Cấu hình nên đặt qua volume/env/compose.
Stats
Xem CPU/RAM/network I/O. Nếu container ăn RAM bất thường → kiểm tra log, config, giới hạn resource.
Image: pull, xem, xóa
Vào Images.
Bạn có thể pull image từ Docker Hub:
nginx:latest
postgres:16
redis:7
Best practice:
– Tránh dùng latest cho production.
– Ghim version cụ thể: postgres:16.3, redis:7.2.
– Xóa image cũ không dùng để tiết kiệm disk.
Portainer hiển thị image size, created date, tag. Nếu VPS nhỏ, phần này rất đáng theo dõi.
Volume: dữ liệu sống còn
Container có thể xóa/recreate dễ dàng. Dữ liệu cần nằm trong volume hoặc bind mount.
Ví dụ PostgreSQL nên có volume:
/var/lib/postgresql/data
Nếu không mount volume → xóa container có thể mất DB.
Trong Portainer, vào Volumes:
– Tạo volume mới.
– Xem volume đang được container nào dùng.
– Xóa volume không dùng.
Bạn vừa deploy app bằng UI, không cần SSH chạy docker compose up -d.
Ưu điểm của Stack:
– Config nằm rõ trong Compose file.
– Dễ sửa env, port, volume.
– Dễ recreate/update.
– Dễ backup cấu hình.
– Dễ học Docker chuẩn hơn so với click tạo container thủ công.
Update container đúng cách
Cách đơn giản trong Portainer:
1. Vào Stacks.
2. Chọn stack.
3. Sửa image tag nếu cần.
4. Bấm Update the stack.
5. Chọn pull latest image nếu muốn.
6. Deploy lại.
Nếu dùng tag cố định, update chủ động hơn. Ví dụ:
image: nginx:1.27
Thay vì:
image: nginx:latest
Với app quan trọng: đọc changelog trước, backup volume/DB trước.
Backup Portainer và dữ liệu app
Portainer config nằm trong volume:
portainer_data
Nhưng dữ liệu app nằm ở volume riêng. Backup cần gồm:
Backup volume thường làm bằng container tạm hoặc tool chuyên dụng như Restic, Borg, Kopia. Với DB, nên dùng backup logic:
pg_dump
mysqldump
Không nên chỉ copy raw DB volume khi DB đang chạy nếu chưa hiểu consistency.
Bảo mật Portainer cho VPS public
Portainer tiện → cũng nhạy cảm. Nếu bị chiếm, attacker có thể chạy container mount host filesystem.
Khuyến nghị:
– Không mở 9443 public nếu không cần.
– Dùng VPN/Tailscale/WireGuard.
– Bật 2FA nếu bản/thiết lập hỗ trợ.
– Dùng reverse proxy + HTTPS thật.
– Giới hạn IP bằng firewall.
– Cập nhật Portainer định kỳ.
– Không chia sẻ admin account.
– Dùng user/team quyền thấp nếu nhiều người dùng.
Firewall ví dụ chỉ cho IP của bạn truy cập:
sudo ufw allow from YOUR_IP to any port 9443
sudo ufw deny 9443
Có thể cần reset bằng helper container hoặc recreate data tùy tình huống. Nếu xóa portainer_data → mất config Portainer, không mất container app nhưng mất metadata/stacks trong Portainer.
Stack deploy lỗi YAML
YAML nhạy indent. Dùng 2 spaces. Không dùng tab.
Kết luận: Portainer giúp Docker dễ tiếp cận hơn
Portainer không làm Docker “biến mất”, nhưng làm Docker dễ nhìn, dễ quản, dễ học. Người mới có thể bắt đầu bằng UI, hiểu container/image/volume/network qua thao tác trực quan, sau đó dần học Compose và CLI.
Cách dùng thực tế nhất:
– App đơn giản → deploy bằng Stack.
– Dữ liệu quan trọng → luôn dùng volume + backup.
– VPS public → khóa truy cập Portainer.
– Production → ghim image version, kiểm soát update.
– Debug sâu → kết hợp CLI.
Nếu bạn mới bước vào Docker, Portainer là điểm khởi đầu rất tốt: 30 phút để chạy được, vài ngày để quen, vài tuần để quản trị homelab/VPS tự tin hơn.