Cài Docker và Docker Compose trên Ubuntu 22.04 (kèm lưu ý tường lửa)
Cài Docker trên VPS Ubuntu giúp bạn chạy ứng dụng trong container: cài nhanh, chạy giống nhau ở mọi máy, dễ nâng cấp và gỡ bỏ. Bài viết hướng dẫn cài Docker và Docker Compose từ kho chính thức trên Ubuntu 22.04, chạy thử một ứng dụng và lưu ý quan trọng về tường lửa.
Chuẩn bị
- VPS Ubuntu 22.04 (hoặc 24.04), tối thiểu 1 GB RAM; nên 2 GB trở lên nếu chạy nhiều container.
- Đăng nhập SSH bằng root hoặc tài khoản có sudo. Xem hướng dẫn kết nối SSH.
Bước 1: Thêm kho cài đặt chính thức của Docker
apt update
apt install ca-certificates curl -y
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
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" > /etc/apt/sources.list.d/docker.list
apt update
Kho chính thức luôn có bản Docker mới hơn bản trong kho mặc định của Ubuntu.
Bước 2: Cài Docker Engine và Compose
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
systemctl enable --now docker
docker --version
docker compose version
Chạy thử:
docker run --rm hello-world
Thấy dòng "Hello from Docker!" là Docker đã chạy.
Dùng Docker không cần sudo (tuỳ chọn)
usermod -aG docker tentaikhoan
Đă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 3: Chạy ứng dụng bằng Docker Compose
Ví dụ chạy một trang Nginx đơn giản. Tạo thư mục và file compose.yaml:
mkdir -p ~/web && cd ~/web
nano compose.yaml
services:
web:
image: nginx:stable
ports:
- "127.0.0.1:8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
mkdir html && echo "Xin chao tu Docker" > html/index.html
docker compose up -d
docker compose ps
curl http://127.0.0.1:8080
Các lệnh hay dùng:
docker compose logs -f: xem log.docker compose pull && docker compose up -d: cập nhật lên image mới.docker compose down: dừng và xoá container (dữ liệu trong volume vẫn giữ).
Lưu ý quan trọng: Docker và tường lửa UFW
Docker tự thêm quy tắc iptables khi bạn công bố cổng (ports:). Vì vậy cổng công bố dạng "8080:80" sẽ mở ra Internet kể cả khi UFW đang chặn cổng đó. Cách an toàn:
- Chỉ công bố ra
127.0.0.1như ví dụ trên ("127.0.0.1:8080:80"), rồi để Nginx trên máy làm reverse proxy ra ngoài cổng 80/443. - Cơ sở dữ liệu (MySQL, PostgreSQL, Redis) trong container không cần công bố cổng: các container trong cùng file Compose tự kết nối với nhau qua tên dịch vụ.
- Kiểm tra cổng nào đang mở từ bên ngoài bằng công cụ kiểm tra port.
Dọn dẹp dung lượng
Image và container cũ chiếm dung lượng dần theo thời gian:
docker system df # xem dung lượng
docker image prune -a # xoá image không còn dùng
Câu hỏi thường gặp
Docker có chạy trên VPS Windows không?
Docker Desktop dành cho máy tính cá nhân; trên máy chủ, Docker dùng tốt và phổ biến nhất trên Linux. Nếu cần Docker, hãy chọn VPS Linux.
Khởi động lại VPS thì container có tự chạy lại không?
Có, nếu dịch vụ Docker được bật khi khởi động (systemctl enable docker) và container có restart: unless-stopped như ví dụ.
Kết luận
Với Docker và Docker Compose, bạn triển khai ứng dụng trên VPS chỉ bằng một file cấu hình. Nhớ công bố cổng ra 127.0.0.1 để không vô tình mở cổng ra Internet. Cần VPS chạy Docker? Xem các gói Cloud VPS có sẵn Ubuntu.
Bạn thấy bài viết này hữu ích?
Chia sẻ lên Facebook