VPS chạy Docker là việc cài đặt Docker Engine trên máy chủ ảo VPS để triển khai và quản lý các container ứng dụng. Mô hình này giúp doanh nghiệp và developer đóng gói ứng dụng cùng các thành phần cần thiết, triển khai nhanh và duy trì môi trường nhất quán hơn giữa các giai đoạn phát triển. Bài viết dưới đây hướng dẫn từ cách chọn VPS phù hợp, cài đặt Docker trên Ubuntu đến triển khai bằng Docker Compose, kiểm tra tài nguyên và xử lý các lỗi thường gặp khi vận hành.
Vì sao nên chạy Docker trên VPS?
Docker trên VPS phù hợp khi cần triển khai nhiều ứng dụng hoặc dịch vụ độc lập trên cùng một máy chủ mà không muốn tạo một máy ảo riêng cho từng ứng dụng. Container sử dụng chung kernel của hệ điều hành host nên thường có overhead thấp hơn việc chạy nhiều máy ảo riêng biệt, trong khi vẫn tạo được môi trường tách biệt ở cấp ứng dụng.
Một lợi ích khác của Docker là khả năng đóng gói ứng dụng cùng dependency và runtime vào image. Nhờ đó, môi trường triển khai giữa máy development, staging và production có tính nhất quán cao hơn, hạn chế lỗi phát sinh do khác biệt về thư viện hoặc phiên bản runtime.
Docker cũng giúp quá trình triển khai và mở rộng đơn giản hơn. Khi cần chạy thêm một instance của ứng dụng, có thể tạo container mới từ cùng image thay vì cài đặt thủ công toàn bộ môi trường. Với các hệ thống gồm nhiều service, Docker Compose tiếp tục đơn giản hóa việc định nghĩa, khởi động và quản lý các container.
Tuy nhiên, Docker không thay thế hoàn toàn máy ảo. Container chia sẻ kernel của hệ điều hành host, trong khi mỗi máy ảo có hệ điều hành và kernel riêng. Vì vậy, VPS chạy Docker phù hợp với workload cần triển khai ứng dụng linh hoạt; còn VM vẫn có lợi thế trong những trường hợp yêu cầu mức cô lập hệ điều hành cao hoặc cần chạy một hệ điều hành khác với hệ điều hành của host.

Chuẩn bị VPS trước khi cài Docker
Trước khi cài Docker, VPS cần đáp ứng một số điều kiện cơ bản về hệ điều hành, tài nguyên và quyền truy cập. Việc lựa chọn cấu hình nên dựa trên workload thực tế thay vì chỉ dựa vào một mức cấu hình tối thiểu cố định.
1. Hệ điều hành phù hợp
Ubuntu LTS là lựa chọn phổ biến cho VPS chạy Docker nhờ hệ sinh thái lớn, tài liệu phong phú và quy trình cài đặt Docker rõ ràng. Debian cũng là một lựa chọn phù hợp cho các hệ thống cần môi trường Linux ổn định.
Khi triển khai mới, nên sử dụng phiên bản LTS hoặc bản phân phối vẫn còn trong thời gian hỗ trợ thay vì các phiên bản đã hết vòng đời. Điều này giúp hệ thống tiếp tục nhận được bản cập nhật bảo mật và giảm rủi ro phải nâng cấp hệ điều hành sớm.
Trong bài viết này, các bước cài đặt sử dụng Ubuntu vì đây là môi trường phổ biến và phù hợp với phần lớn nhu cầu chạy Docker trên VPS.
2. Chọn CPU, RAM và dung lượng lưu trữ
Docker không có một mức CPU hoặc RAM tối thiểu áp dụng cho mọi workload. Nhu cầu tài nguyên phụ thuộc vào số lượng container, loại ứng dụng, database, traffic và mức sử dụng tài nguyên của từng service.
Có thể tham khảo:
- Container nhẹ, website hoặc API đơn giản: từ 1–2 vCPU và 2GB RAM.
- Ứng dụng web kết hợp database: từ 2–4 vCPU và 4GB RAM.
- Nhiều service, database lớn hoặc workload xử lý cao: từ 4 vCPU và 8GB RAM trở lên.
Các mức trên chỉ mang tính tham khảo. Sau khi triển khai, nên theo dõi CPU, RAM và dung lượng ổ đĩa để điều chỉnh cấu hình theo mức sử dụng thực tế.
Về lưu trữ, SSD hoặc NVMe giúp cải thiện tốc độ đọc ghi của image, container và đặc biệt là database. Ngoài dung lượng dành cho ứng dụng, cần dự phòng thêm không gian cho Docker image, volume, log và dữ liệu backup cục bộ nếu có.
3. Quyền truy cập
Cần có tài khoản root hoặc tài khoản có quyền sudo trên VPS để cài Docker và thay đổi cấu hình hệ thống. Đồng thời, VPS cần có kết nối SSH ổn định để thực hiện các thao tác quản trị từ xa.

4. Tiêu chí chọn VPS chạy Docker
Ngoài CPU, RAM và ổ đĩa, nên ưu tiên VPS có:
- Quyền root hoặc sudo để chủ động cài đặt và cấu hình Docker.
- SSD/NVMe với dung lượng phù hợp workload.
- Network ổn định và băng thông đáp ứng nhu cầu ứng dụng.
- Khả năng nâng cấp CPU, RAM và dung lượng khi workload tăng.
- Hệ điều hành còn được hỗ trợ lâu dài.
- Chính sách backup hoặc snapshot phù hợp nếu ứng dụng có dữ liệu quan trọng.
Nếu chưa xác định được cấu hình phù hợp với số lượng container dự kiến, nên ưu tiên nhà cung cấp cho phép nâng cấp tài nguyên linh hoạt thay vì lựa chọn cấu hình quá thấp ngay từ đầu.
Hướng dẫn cài đặt Docker trên VPS Ubuntu
Các bước dưới đây sử dụng Docker Engine từ repository chính thức của Docker. Cách này giúp chủ động sử dụng phiên bản Docker được Docker duy trì thay vì phụ thuộc vào phiên bản có sẵn trong repository mặc định của hệ điều hành.
Bước 1: Cập nhật hệ thống
Kết nối SSH vào VPS và cập nhật danh sách package:
sudo apt update
Có thể nâng cấp các package hiện có bằng:
sudo apt upgrade -y
Bước 2: Cài đặt các package cần thiết
Cài các công cụ cần thiết để thêm repository của Docker:
sudo apt install ca-certificates curl -y
Bước 3: Thêm repository chính thức của Docker
Tạo thư mục lưu trữ keyring:
sudo install -m 0755 -d /etc/apt/keyrings
Tải Docker GPG key:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
Cấp quyền đọc cho key:
sudo chmod a+r /etc/apt/keyrings/docker.asc
Sau đó thêm repository Docker vào APT sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cập nhật lại danh sách package:
sudo apt update
Bước 4: Cài đặt Docker Engine và Docker Compose
Cài Docker Engine cùng các thành phần cần thiết:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Sau bước này, VPS đã có Docker Engine, Docker CLI, Buildx và Docker Compose plugin.
Bước 5: Khởi động và kiểm tra Docker
Bật Docker cùng hệ thống:
sudo systemctl enable docker
Khởi động Docker:
sudo systemctl start docker
Kiểm tra trạng thái:
sudo systemctl status docker
Nếu dịch vụ hiển thị trạng thái active (running), Docker Engine đang hoạt động bình thường.

Bước 6: Cho phép user chạy Docker không cần sudo
Theo mặc định, user thông thường có thể cần sudo khi chạy lệnh Docker. Có thể thêm user hiện tại vào nhóm docker:
sudo usermod -aG docker $USER
Sau đó đăng xuất và đăng nhập lại để nhóm mới được áp dụng. Có thể kiểm tra bằng:
docker ps
Lưu ý, thành viên của nhóm docker có quyền tương tác rất mạnh với Docker daemon, vì vậy chỉ nên cấp quyền này cho những tài khoản được tin cậy.
Bước 7: Kiểm tra Docker hoạt động
Chạy container kiểm tra:
docker run hello-world
Nếu Docker tải image kiểm tra và trả về thông báo xác nhận, quá trình cài đặt đã hoàn tất.
Kiểm tra Docker Compose:
docker compose version
Nếu hệ thống trả về phiên bản Compose, plugin Docker Compose đã được cài đặt thành công.
Kiểm tra VPS có đủ tài nguyên để chạy Docker không?
Cấu hình VPS đủ dùng tại thời điểm triển khai chưa có nghĩa là hệ thống sẽ luôn đủ tài nguyên. Khi số lượng container, traffic hoặc dữ liệu tăng lên, CPU, RAM và ổ đĩa có thể trở thành điểm nghẽn.
Kiểm tra RAM
Dùng lệnh:
free -h
Lệnh này cho biết tổng RAM, lượng đang sử dụng, còn trống và phần swap nếu VPS đã cấu hình swap.
Nếu RAM thường xuyên gần mức tối đa và hệ thống bắt đầu sử dụng swap nhiều, cần xem xét container nào đang tiêu thụ nhiều tài nguyên hoặc nâng cấp RAM.
Kiểm tra CPU
Có thể sử dụng:
nproc
để xem số CPU logic mà VPS được cấp.
Để theo dõi mức sử dụng CPU theo thời gian thực, có thể dùng:
top
hoặc cài và sử dụng htop nếu cần giao diện dễ quan sát hơn.
Theo dõi tài nguyên từng container
Docker cung cấp lệnh:
docker stats
Lệnh này hiển thị mức sử dụng CPU, RAM, network và một số thông tin I/O của các container đang chạy.
Đây là công cụ hữu ích để xác định container nào đang tiêu thụ tài nguyên bất thường. Nếu một service liên tục sử dụng CPU hoặc RAM cao, nên kiểm tra log và cấu hình ứng dụng trước khi quyết định nâng cấp VPS.
Kiểm tra dung lượng ổ đĩa
Kiểm tra dung lượng filesystem:
df -h
Đồng thời có thể kiểm tra Docker đang sử dụng bao nhiêu dung lượng bằng:
docker system df
Docker image, container layer, volume và log có thể tăng dần theo thời gian. Vì vậy, ổ đĩa gần đầy là một trong những nguyên nhân cần được theo dõi thường xuyên khi vận hành Docker trên VPS.
Khi nào nên nâng cấp VPS?
Có thể xem xét nâng cấp khi:
RAM thường xuyên ở mức cao và swap tăng liên tục.
CPU liên tục tải cao trong thời gian dài.
Ổ đĩa gần đầy dù đã loại bỏ dữ liệu không cần thiết.
Container thường xuyên bị restart hoặc gặp lỗi do thiếu tài nguyên.
Workload hoặc traffic tăng vượt khả năng xử lý hiện tại.
Trước khi nâng cấp, nên xác định nguyên nhân từ container hoặc ứng dụng. Không phải mọi vấn đề hiệu năng đều xuất phát từ việc VPS thiếu CPU hoặc RAM.
Quản lý container với Docker Compose
Khi VPS chạy nhiều service phụ thuộc lẫn nhau, Docker Compose giúp định nghĩa toàn bộ hệ thống trong một file cấu hình thay vì phải chạy từng container bằng nhiều lệnh docker run.
Ví dụ, một ứng dụng Node.js sử dụng PostgreSQL có thể gồm hai service:
VPS
└── Docker
├── app — Node.js
└── db — PostgreSQLTạo file Compose
Ví dụ đơn giản:
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
restart: unless-stopped
db:
image: postgres:17
environment:
POSTGRES_DB: app
POSTGRES_USER: app
POSTGRES_PASSWORD: your_password
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
postgres_data:Trong ví dụ trên:
applà service chứa ứng dụng Node.js được build từ Dockerfile.dbsử dụng image PostgreSQL.portsánh xạ port của ứng dụng ra VPS.depends_onxác định quan hệ phụ thuộc giữa các service.volumestạo vùng lưu trữ persistent cho PostgreSQL.restart: unless-stoppedgiúp service tự khởi động lại trong các trường hợp phù hợp, chẳng hạn sau khi VPS reboot.
Mật khẩu database trong ví dụ chỉ mang tính minh họa. Khi triển khai production, không nên lưu credential nhạy cảm trực tiếp trong file Compose công khai.
Khởi chạy hệ thống
Đặt file Compose trong thư mục dự án, sau đó chạy:
docker compose up -dDocker Compose sẽ tạo network cho các service và khởi động các container theo cấu hình.
Kiểm tra trạng thái:
docker compose psXem log của toàn bộ service:
docker compose logsHoặc theo dõi log của một service cụ thể:
docker compose logs -f appKhi cần dừng hệ thống:
docker compose downViệc lưu cấu hình Compose giúp quá trình di chuyển ứng dụng sang VPS khác đơn giản hơn. Tuy nhiên, file Compose chỉ mô tả cách tạo lại service; dữ liệu persistent trong volume vẫn cần được backup riêng.
Khắc phục một số lỗi thường gặp khi chạy Docker trên VPS
Permission denied khi chạy Docker
Lỗi này thường xuất hiện khi user chưa thuộc nhóm docker hoặc phiên đăng nhập chưa được cập nhật sau khi thêm group.
Có thể kiểm tra và thêm user:
sudo usermod -aG docker $USERSau đó đăng xuất, đăng nhập lại hoặc sử dụng:
newgrp dockerRồi thử:
docker psDocker daemon không chạy
Kiểm tra trạng thái Docker:
sudo systemctl status dockerNếu Docker đang dừng, có thể khởi động lại:
sudo systemctl restart dockerNếu lỗi tiếp tục xuất hiện, nên xem log của service để xác định nguyên nhân thay vì liên tục restart:
sudo journalctl -u docker --no-pager -n 100Xung đột port
Lỗi port thường xảy ra khi port mà container muốn sử dụng đã được một service khác trên VPS chiếm giữ.
Có thể kiểm tra:
sudo lsof -i :3000Thay 3000 bằng port thực tế đang bị xung đột.
Sau khi xác định service đang sử dụng port, có thể đổi port mapping trong file Compose hoặc xử lý service đang chiếm port nếu không còn cần thiết.
VPS hết dung lượng do Docker image và log
Trước tiên kiểm tra:
df -hvà:
docker system dfCó thể sử dụng:
docker system pruneđể dọn các resource Docker không còn được sử dụng.
Tuy nhiên, cần kiểm tra kỹ những gì Docker đề xuất xóa trước khi xác nhận. Không nên sử dụng các tùy chọn cleanup mạnh một cách máy móc vì image hoặc resource không còn được container hiện tại sử dụng vẫn có thể cần cho việc triển khai lại.
Ngoài Docker resource, cũng nên kiểm tra log của ứng dụng và hệ điều hành nếu dung lượng ổ đĩa tăng bất thường.
Checklist trước khi đưa Docker vào vận hành
Trước khi đưa hệ thống Docker trên VPS vào production, nên rà soát:
- Docker Engine và các package liên quan đang ở phiên bản được hỗ trợ.
- VPS sử dụng hệ điều hành còn trong thời gian hỗ trợ.
- SSH được bảo vệ bằng phương thức xác thực phù hợp.
- Firewall chỉ mở những port thực sự cần thiết.
- Quyền truy cập Docker daemon được cấp cho đúng tài khoản.
- Container không chạy ứng dụng với quyền root nếu không cần thiết.
- Database và dữ liệu persistent được lưu trong volume phù hợp.
- Dữ liệu quan trọng được backup định kỳ.
- Backup được lưu tách biệt khỏi VPS nếu yêu cầu an toàn dữ liệu cao.
- Đã kiểm tra khả năng restore backup thay vì chỉ kiểm tra việc tạo backup.
- Service quan trọng có restart policy phù hợp.
- CPU, RAM và disk được theo dõi thường xuyên.
- Có phương án xử lý khi VPS gần hết tài nguyên.
- Có quy trình cập nhật Docker image và kiểm tra ứng dụng sau khi update.
- Đã biết cách kiểm tra container status và log khi xảy ra sự cố.
Đặc biệt, Docker không phải là cơ chế backup. Việc container được tạo lại từ image không đồng nghĩa với việc dữ liệu trong database hoặc volume được bảo toàn. Với dữ liệu quan trọng, backup nên được thiết kế như một quy trình độc lập và định kỳ kiểm tra khả năng khôi phục.
Kết luận
VPS chạy Docker là lựa chọn phù hợp khi cần triển khai nhiều ứng dụng hoặc service độc lập trên một máy chủ với quy trình đóng gói và triển khai nhất quán. Docker giúp đơn giản hóa việc triển khai, trong khi Docker Compose hỗ trợ quản lý nhiều container có quan hệ với nhau.
Để hệ thống hoạt động ổn định, việc cài Docker chỉ là bước đầu. Cần chọn thuê VPS giá rẻ có tài nguyên phù hợp với workload, theo dõi CPU, RAM và dung lượng ổ đĩa, quản lý volume và backup dữ liệu, đồng thời có quy trình xử lý lỗi và cập nhật image rõ ràng.
Nếu chưa xác định được CPU, RAM và dung lượng lưu trữ phù hợp với số lượng container dự kiến, bạn có thể liên hệ LANIT để được tư vấn cấu hình VPS miễn phí trước khi triển khai.











