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.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneCài Docker trên Ubuntu 24.04
Bước 1. Thêm khóa và địa chỉ kho
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.listBước 2. Cài Docker Engine và Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginCà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.
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-pluginCà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.
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 dockerLầ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.
docker run --rm hello-world
docker compose versionNế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.
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.
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 -dMở 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ủ.
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.
{
"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.
