Cài Docker và Docker Compose trên VPS Ubuntu
Các bước cài Docker Engine và Docker Compose từ kho chính thức trên Ubuntu 22.04, 24.04, chạy container đầu tiên, giới hạn log và lưu ý về RAM, cổng mạng.
Docker đóng gói ứng dụng cùng mọi thư viện nó cần thành container, chạy giống nhau trên mọi máy. Trên VPS KVM, Docker chạy đầy đủ như trên máy chủ thật. Hướng dẫn dưới đây cài Docker Engine từ kho chính thức của Docker, áp dụng cho Ubuntu 22.04 và 24.04.
Cần gì trước: một VPS Ubuntu và tài khoản có quyền sudo. Chưa biết cách vào VPS, xem kết nối VPS bằng SSH. Chạy vài container nên chọn VPS từ 2 GB RAM.
Bước 1: Thêm kho phần mềm của Docker
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
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
sudo apt update
Bước 2: Cài Docker Engine và Compose
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Nếu kho của Docker chưa hỗ trợ bản Ubuntu bạn dùng (thường xảy ra vài tuần đầu sau khi Ubuntu ra bản mới), lệnh
apt update ở bước 1 sẽ báo lỗi. Khi đó xóa file /etc/apt/sources.list.d/docker.list và cài bản do Ubuntu
đóng gói: sudo apt install -y docker.io docker-compose-v2.
Bước 3: Kiểm tra
sudo docker run --rm hello-world
docker compose version
Thấy dòng Hello from Docker! là Docker đã chạy.
Bước 4: Dùng Docker không cần gõ sudo
sudo usermod -aG docker $USER
Đăng xuất rồi đăng nhập lại để có hiệu lực. Lưu ý: thành viên nhóm docker có quyền tương đương root, chỉ thêm tài khoản
bạn tin tưởng.
Bước 5: Giới hạn dung lượng log
Mặc định log của container lớn dần không giới hạn và có thể làm đầy ổ đĩa. Tạo file /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
sudo systemctl restart docker
Thiết lập này áp dụng cho container tạo mới sau khi khởi động lại Docker.
Ví dụ: chạy website bằng Docker Compose
Tạo thư mục ~/web với file compose.yaml:
services:
web:
image: nginx:alpine
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
mkdir -p ~/web/html && echo '<h1>Xin chào từ Docker</h1>' > ~/web/html/index.html
cd ~/web && docker compose up -d
curl http://127.0.0.1:8080
127.0.0.1:8080:80 nghĩa là cổng chỉ mở trong VPS. Đây là cách nên dùng: bạn đưa website ra Internet qua
Cloudflare Tunnel trỏ tới http://localhost:8080,
không cần mở cổng ra ngoài.
Lệnh hay dùng
| Lệnh | Tác dụng |
|---|---|
docker ps | Liệt kê container đang chạy |
docker compose logs -f | Xem log trực tiếp |
docker compose pull && docker compose up -d | Cập nhật image và chạy lại |
docker stats | Xem RAM, CPU từng container dùng |
docker system prune | Xóa image, container, mạng không còn dùng |
Lưu ý về RAM và bảo mật
- Theo dõi
docker stats. Database như MySQL, PostgreSQL thường cần 300 MB – 1 GB mỗi container. - Docker tự thêm luật tường lửa cho cổng bạn publish, bỏ qua UFW. Vì vậy hãy publish cổng vào
127.0.0.1như ví dụ trên thay vì0.0.0.0. - Chỉ dùng image chính thức hoặc từ nguồn tin cậy, và cập nhật image định kỳ.
