Docker là công cụ mạnh để triển khai website, API, database, Bot Discord và nhiều ứng dụng khác trên VPS. Tuy nhiên, việc quản lý Docker hoàn toàn bằng dòng lệnh có thể gây khó khăn cho người mới, đặc biệt khi máy chủ có nhiều container, image, volume và network.
Portainer giải quyết vấn đề này bằng cách cung cấp giao diện quản trị Docker trực quan trên trình duyệt. Thay vì phải ghi nhớ nhiều lệnh như docker ps, docker logs, docker exec hoặc docker compose up, người quản trị có thể thực hiện phần lớn thao tác bằng cách nhấp chuột.
Portainer là gì?
Portainer là nền tảng quản lý môi trường container thông qua giao diện web. Công cụ này có thể kết nối và quản lý Docker Standalone, Docker Swarm, Kubernetes cùng nhiều môi trường container khác tùy phiên bản và cấu hình sử dụng.
Portainer gồm hai thành phần chính là Portainer Server và Portainer Agent. Portainer Server cung cấp giao diện quản trị và lưu cấu hình, trong khi Agent được triển khai trên các máy chủ cần quản lý từ xa. Một Portainer Server có thể kết nối với nhiều môi trường để quản trị tập trung.
Đối với một VPS Docker đơn lẻ, người dùng thường chỉ cần chạy Portainer Server và gắn Docker socket của máy chủ vào container Portainer.
Portainer hiện có hai dòng chính:
- Portainer Community Edition: phù hợp với cá nhân, phòng lab và những hệ thống có nhu cầu quản lý Docker cơ bản.
- Portainer Business Edition: bổ sung các tính năng quản trị, phân quyền và hỗ trợ dành cho tổ chức.
Bài viết này tập trung vào Portainer Community Edition chạy trên VPS Ubuntu.
Portainer quản lý được những gì?
Sau khi kết nối với Docker Engine, Portainer cho phép quản lý hầu hết thành phần thường dùng trong Docker, bao gồm:
- Container.
- Image.
- Network.
- Volume.
- Docker Compose Stack.
- Registry.
- Template ứng dụng.
- Tài nguyên và trạng thái hoạt động.
Trong trang quản lý container, người dùng có thể xem trạng thái, cấu hình port, biến môi trường, label, volume và network đã gắn. Portainer cũng hỗ trợ khởi động, dừng, xóa, xem log, theo dõi thống kê tài nguyên, truy cập terminal và kiểm tra cấu hình container.
Portainer không thay thế Docker Engine. Đây là lớp giao diện hoạt động phía trên Docker để giúp việc quản trị thuận tiện hơn.
Portainer khác Docker Desktop như thế nào?
Docker Desktop được thiết kế chủ yếu cho máy tính cá nhân chạy Windows, macOS hoặc Linux. Công cụ này phù hợp với môi trường phát triển và kiểm thử cục bộ.
Portainer thường được triển khai trực tiếp trên VPS hoặc máy chủ. Người quản trị có thể truy cập giao diện từ xa bằng trình duyệt mà không cần cài ứng dụng quản lý trên máy tính cá nhân.
Ví dụ, bạn có một VPS Ubuntu đặt tại Singapore. Sau khi cài Portainer, có thể truy cập giao diện theo địa chỉ:
https://IP-VPS:9443
Từ đó, bạn có thể kiểm tra container, xem log hoặc triển khai ứng dụng mà không cần đăng nhập SSH cho mọi thao tác.
Yêu cầu trước khi cài Portainer
Để cài Portainer trên VPS Ubuntu, máy chủ cần có:
- Docker Engine đang hoạt động.
-
Tài khoản
roothoặc quyềnsudo. - Cổng truy cập dành cho giao diện Portainer.
- Dung lượng lưu trữ để duy trì cấu hình Portainer.
Portainer khuyến nghị sử dụng phiên bản Docker mới và đang hoạt động ổn định. Với Docker Standalone, Portainer có thể kết nối bằng Docker socket, Agent, Docker API hoặc Edge Agent tùy mô hình triển khai.
Kiểm tra Docker bằng lệnh:
docker --version sudo systemctl status docker
Nếu Docker chưa được cài đặt, cần hoàn tất việc cài Docker Engine trước khi tiếp tục.
Cách cài Portainer trên VPS Ubuntu
Bước 1: Tạo volume lưu dữ liệu Portainer
Chạy lệnh:
docker volume create portainer_data
Volume portainer_data được sử dụng để lưu tài khoản quản trị, cấu hình, môi trường đã kết nối và dữ liệu nội bộ của Portainer.
Dữ liệu không nên chỉ nằm trong lớp ghi của container. Docker khuyến nghị sử dụng volume để dữ liệu có thể tồn tại khi container bị xóa hoặc tạo lại.
Bước 2: Khởi chạy Portainer Community Edition
Chạy lệnh sau:
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:lts
Trong đó:
-
9443:9443công khai giao diện HTTPS của Portainer. -
8000:8000được sử dụng cho một số tính năng Edge Agent và có thể không cần thiết với hệ thống Docker cục bộ. -
--restart=alwaysgiúp Portainer tự khởi động lại khi VPS hoặc Docker Engine được khởi động. -
/var/run/docker.sockcho phép Portainer giao tiếp với Docker Engine. -
portainer_data:/datalưu dữ liệu Portainer trong volume. -
portainer/portainer-ce:ltssử dụng bản Community Edition thuộc dòng LTS.
Tài liệu cài đặt Portainer hiện sử dụng cổng HTTPS 9443 và image Portainer CE LTS cho hệ thống Docker trên Linux.
Bước 3: Kiểm tra container
Chạy:
docker ps
Nếu Portainer hoạt động bình thường, bạn sẽ thấy container có tên portainer.
Kiểm tra log khi gặp lỗi:
docker logs portainer
Khởi động lại Portainer:
docker restart portainer
Đăng nhập Portainer lần đầu
Mở trình duyệt và truy cập:
https://IP-VPS:9443
Portainer tạo chứng chỉ HTTPS mặc định, vì vậy trình duyệt có thể hiển thị cảnh báo chứng chỉ khi bạn truy cập trực tiếp bằng địa chỉ IP. Trong môi trường production, nên cấu hình tên miền và reverse proxy với chứng chỉ SSL hợp lệ.
Ở lần truy cập đầu tiên, Portainer yêu cầu tạo tài khoản quản trị. Tên mặc định là admin, nhưng có thể thay đổi. Mật khẩu phải có ít nhất 12 ký tự và đáp ứng yêu cầu hiển thị trên giao diện. Sau khi tài khoản được tạo, Portainer sẽ mở trình hướng dẫn kết nối môi trường. Môi trường Docker cục bộ thường được hệ thống tự động phát hiện.
Bạn nên hoàn tất thiết lập trong vòng năm phút sau khi khởi động Portainer lần đầu. Nếu không có tài khoản quản trị được tạo trong khoảng thời gian này, Portainer có thể ngừng tiếp nhận yêu cầu để tránh người khác chiếm quyền cấu hình hệ thống. Khi gặp lỗi timeout, hãy khởi động lại container rồi thực hiện thiết lập lại.
Cách quản lý container bằng Portainer
Sau khi đăng nhập, chọn môi trường Docker rồi mở mục Containers. Tại đây, Portainer hiển thị danh sách container đang chạy và đã dừng.
Khi chọn một container, bạn có thể:
- Start, stop, restart hoặc kill container.
- Xem log hoạt động.
- Theo dõi CPU, RAM và lưu lượng mạng.
- Kiểm tra port đang sử dụng.
- Xem biến môi trường.
- Truy cập terminal của container.
- Kiểm tra volume và network.
- Xóa hoặc tạo lại container.
Tính năng Duplicate/Edit cho phép chỉnh sửa cấu hình container. Khi xác nhận triển khai, Portainer sẽ tạo container mới với cấu hình đã cập nhật và thay thế container cũ. Vì vậy, dữ liệu quan trọng phải được lưu trong volume trước khi chỉnh sửa hoặc tạo lại container.
Cách xem log container
Chọn:
Containers → Tên container → Logs
Portainer cho phép tìm kiếm nội dung log, giới hạn số dòng, hiển thị timestamp, tự động làm mới và tải log xuống. Đây là một trong những tính năng hữu ích nhất khi xử lý ứng dụng không khởi động, database mất kết nối hoặc website báo lỗi.
Cách truy cập terminal container
Trong trang chi tiết container, chọn Console, sau đó chọn shell phù hợp:
/bin/bash
Hoặc:
/bin/sh
Tính năng này tương đương với việc sử dụng lệnh:
docker exec -it TEN_CONTAINER /bin/bash
Không phải image nào cũng có Bash. Các image nhỏ như Alpine Linux thường chỉ hỗ trợ /bin/sh.
Quản lý Docker Compose bằng Stack
Trong Portainer, Stack là một nhóm service thuộc cùng một ứng dụng. Ví dụ, một WordPress Stack có thể bao gồm container WordPress, MySQL, Redis và reverse proxy.
Để triển khai Docker Compose:
- Mở mục Stacks.
- Chọn Add stack.
- Đặt tên cho Stack.
- Dán nội dung Compose vào Web editor.
- Chọn Deploy the stack.
Portainer hỗ trợ triển khai Stack bằng Web editor, tải tệp Compose lên, lấy cấu hình từ Git repository hoặc sử dụng custom template.
Ví dụ:
services: nginx: image: nginx:latest restart: unless-stopped ports: - "8080:80"
Sau khi triển khai, Portainer sẽ tạo container và network tương ứng. Khi cần cập nhật, bạn chỉ cần sửa cấu hình Stack rồi chọn cập nhật lại hệ thống.
Quản lý volume và network
Mục Volumes cho phép tạo, kiểm tra và xóa Docker volume. Volume thường được sử dụng để lưu database, tệp website, cấu hình ứng dụng và dữ liệu cần duy trì lâu dài.
Không nên xóa volume khi chưa xác định container nào đang sử dụng. Việc xóa volume database có thể làm mất toàn bộ dữ liệu ứng dụng.
Mục Networks cho phép quản lý các mạng Docker và kết nối container vào cùng một mạng nội bộ. Portainer hỗ trợ quản lý nhiều loại network tùy môi trường Docker.
Portainer có an toàn không?
Portainer có thể được sử dụng an toàn nếu cấu hình đúng, nhưng đây là công cụ có quyền quản lý Docker Engine. Việc gắn /var/run/docker.sock cho phép Portainer thực hiện các thao tác cấp cao trên máy chủ. Docker cảnh báo rằng người hoặc ứng dụng có quyền truy cập Docker socket có thể đạt quyền kiểm soát tương đương root trên host.
Do đó, nên áp dụng các biện pháp sau:
- Không chia sẻ tài khoản quản trị.
- Sử dụng mật khẩu mạnh và duy nhất.
- Chỉ cho phép IP tin cậy truy cập cổng quản trị.
- Đặt Portainer sau reverse proxy có SSL hợp lệ.
- Không công khai Docker API không được mã hóa.
-
Sao lưu volume
portainer_data. - Cập nhật Portainer và Docker thường xuyên.
- Không cấp quyền Portainer cho người không đáng tin cậy.
Portainer hỗ trợ hệ thống xác thực nội bộ và có thể tích hợp một số nhà cung cấp xác thực bên ngoài tùy phiên bản.
Portainer có phù hợp với người mới không?
Portainer phù hợp với người mới vì giao diện giúp trực quan hóa các khái niệm như container, image, network và volume. Tuy nhiên, người dùng vẫn nên học những lệnh Docker cơ bản.
Khi Portainer gặp lỗi hoặc không thể truy cập, bạn vẫn cần SSH vào VPS để kiểm tra Docker service, container và log. Portainer nên được xem là công cụ hỗ trợ quản trị, không phải giải pháp thay thế toàn bộ kiến thức Docker.
Kết luận
Portainer là công cụ quản lý Docker bằng giao diện web, giúp người dùng dễ dàng tạo container, xem log, theo dõi tài nguyên, quản lý volume, network và triển khai Docker Compose Stack.
Đối với VPS chạy nhiều website, database, API hoặc Bot Discord, Portainer giúp giảm thời gian thao tác và cung cấp cái nhìn tổng quan hơn so với việc chỉ sử dụng dòng lệnh. Tuy nhiên, do Portainer có quyền quản lý Docker Engine, giao diện quản trị phải được bảo vệ bằng mật khẩu mạnh, SSL và giới hạn truy cập phù hợp.
ObeGames cung cấp VPS Hosting và VPS NVMe phù hợp để cài đặt Portainer, Docker, Docker Compose, website, database, API và Bot Discord hoạt động ổn định liên tục.