HELPER VPS

Cài Docker trên VPS: Ubuntu, Debian, AlmaLinux và Compose

Cài từ kho chính thức của Docker là nhận Docker Engine và plugin Compose mới nhất, và sau này cập nhật cũng chỉ cần một lần cập nhật hệ thống. Tổng hợp theo thứ tự lệnh cho từng hệ điều hành và các cấu hình nhất định phải làm sau khi cài.

Cách nhanh nhất: tạo máy chủ bằng image Docker

Nếu tạo máy chủ mới, chọn Docker trong danh sách image là nhanh nhất. Bắt đầu với Docker Engine và Docker Compose đã cài trên Ubuntu 24.04 LTS, đăng nhập xong là chạy docker compose up được ngay. Giới thiệu ứng dụng và kích thước đề xuất có ở trang VPS Docker.

Nếu muốn thêm Docker vào máy chủ đang dùng, hoặc dùng hệ điều hành khác như Debian, AlmaLinux, hãy tự cài theo thứ tự dưới đây. Mọi lệnh đều lấy trạng thái kết nối bằng root làm chuẩn. Nếu kết nối bằng người dùng thường, thêm sudo trước lệnh.

Cần kiểm tra gì trước khi cài

Docker chạy trên máy chủ có kích thước bất kỳ. Đối với các dự án cá nhân chạy một vài container, gói chung nhỏ nhất 12GB là đủ; để chạy cùng lúc cơ sở dữ liệu, máy chủ web và cache, 24GB trở lên sẽ cho bạn không gian. Nếu bạn thường xuyên tải và build image, một VPS NVMe với ổ đĩa nhanh sẽ tạo ra sự khác biệt đáng kể.

Nếu có gói Docker cũ từ kho của hệ điều hành, hãy xóa trước để không lẫn với gói chính thức. Gói chưa cài sẽ được bỏ qua nên cứ chạy nguyên lệnh cũng không sao.

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Cài Docker trên Ubuntu 24.04

Bước 1. Thêm khóa và địa chỉ kho

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
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

Bước 2. Cài Docker Engine và Compose

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Cài xong, dịch vụ Docker tự bật và cũng bật cùng khi khởi động lại máy chủ. Cùng lệnh này chạy nguyên vẹn trên Ubuntu 22.04 và 26.04. Tên phiên bản trong địa chỉ kho được đọc tự động từ /etc/os-release.

Cài Docker trên Debian 13

Debian có thứ tự giống Ubuntu, chỉ đổi địa chỉ kho thành linux/debian. Debian 12 cũng dùng cùng lệnh.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/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/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Cài Docker trên AlmaLinux 10

AlmaLinux và Rocky Linux dùng kho RHEL của Docker. Dọn Podman có sẵn trước để không chồng chéo rồi mới cài. AlmaLinux 9 và Rocky Linux 9, 10 cũng dùng cùng lệnh.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Lần cài đầu nếu được hỏi có chấp nhận khóa ký của kho không, nhấn y. Dòng RHEL không tự bật dịch vụ sau khi cài, nên dùng systemctl enable --now docker ở dòng cuối để bật ngay và bật cả khi khởi động.

Kiểm tra cài đặt và container đầu tiên

Chạy thử một container bằng lệnh dưới đây. Nếu hiện thông báo bắt đầu bằng Hello from Docker là engine, tải image và chạy container đều ổn. Có --rm nên chạy xong container được dọn ngay.

Terminal
docker run --rm hello-world
docker compose version

Nếu muốn người dùng thường cũng dùng Docker, thêm người đó vào nhóm docker rồi đăng nhập lại. Nhóm docker có quyền như root, nên chỉ thêm người dùng đáng tin cậy.

Terminal
usermod -aG docker ten_nguoi_dung

Đưa dịch vụ lên bằng Docker Compose

Compose là cách ghi cấu hình container trong một tệp YAML và khởi chạy bằng một dòng. Dù chuyển hay tạo máy chủ mới, chỉ cần cùng tệp là dựng lại cùng môi trường. Ví dụ tệp chạy một web server Nginx trông như sau.

Terminal
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

Mở http://YOUR_SERVER_IP trên trình duyệt sẽ thấy trang Nginx. Đặt index.html vào thư mục html là tệp đó hiện ra. Các lệnh hay dùng chỉ cần bốn lệnh dưới đây.

  • docker compose ps: hiển thị các container đang chạy và cổng.
  • docker compose logs -f: theo dõi nhật ký thời gian thực. Thoát bằng Ctrl+C.
  • docker compose pull && docker compose up -d: tải image mới và đổi container sang phiên bản mới.
  • docker compose down: dừng và dọn container. Dữ liệu trong volume vẫn còn nguyên.

Ghi restart: unless-stopped thì khi khởi động lại máy chủ, container cũng tự chạy lại. Chỉ container bạn tự dừng mới giữ trạng thái dừng.

Cấu hình tường lửa và công khai cổng

Docker tự đưa các cổng công khai bằng ports: vào quy tắc tường lửa (iptables) để mở. Vì vậy cổng chưa được cho phép trong ufw mà ghi vào ports: vẫn truy cập được từ bên ngoài. Cơ sở dữ liệu hay giao diện quản trị không cần hiện ra ngoài thì gắn vào 127.0.0.1 như dưới đây để chỉ truy cập trong máy chủ.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

Dịch vụ web chỉ công khai cổng 80 và 443, phần còn lại gọi nhau bằng tên dịch vụ trong cùng mạng Compose là gọn gàng. Tường lửa cơ bản cho toàn máy chủ hãy làm theo hướng dẫn tường lửa cơ bản, chỉ mở SSH, HTTP, HTTPS.

Quản lý nhật ký và ổ đĩa

Nếu không đặt riêng, nhật ký container sẽ tích lũy mãi. Chỉ định trình điều khiển nhật ký local trong /etc/docker/daemon.json như dưới đây thì nhật ký được nén và chỉ giữ dung lượng định sẵn. Lưu xong chạy systemctl restart docker là áp dụng từ các container tạo mới.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

Image không dùng và container đã dừng cũng chiếm ổ đĩa. Xem dung lượng đang dùng bằng docker system df, dọn image hiện không dùng bằng docker image prune -a. Khi dữ liệu nhiều lên, có thể gắn ổ khối NVMe vào máy chủ để làm thư mục dữ liệu Docker.

Bảo vệ dữ liệu và bước tiếp theo

Container thì xóa và tạo lại bất cứ lúc nào, nhưng dữ liệu trong volume không tạo lại được. Cơ sở dữ liệu nên định kỳ lưu tệp dump, còn toàn máy chủ bảo vệ thêm bằng sao lưu tự động hoặc snapshot là yên tâm. Cách làm có trong hướng dẫn sao lưu và snapshot.

Tệp Compose để đưa WordPress lên bằng Docker có trong hướng dẫn cài WordPress. Nếu muốn triển khai nhiều ứng dụng trên giao diện và tự gắn luôn chứng chỉ HTTPS, hãy tạo máy chủ bằng image Coolify hoặc Dokploy. Kích thước phù hợp để dùng riêng cho container có ở VPS container.

Hướng dẫn nên xem cùng

Các cấu hình nên làm tiếp sau hướng dẫn này.

Xem tất cả hướng dẫn