Cuộn lên đầu trang

Cách Cài Docker Trên VPS Ubuntu Chi Tiết Cho Người Mới

ObeGames27/07/20264 lượt xem

Docker là nền tảng giúp đóng gói và vận hành website, API, database, Bot Discord cùng nhiều ứng dụng khác trong các container độc lập. Thay vì cài trực tiếp toàn bộ thư viện lên hệ điều hành, bạn có thể sử dụng Docker để tạo môi trường triển khai nhất quán, dễ sao lưu, cập nhật và di chuyển giữa các máy chủ.

Bài viết này hướng dẫn cách cài Docker trên VPS Ubuntu bằng kho phần mềm chính thức của Docker. Đây là phương pháp phù hợp hơn cho máy chủ sử dụng lâu dài vì có thể cập nhật Docker thông qua trình quản lý gói apt.

Yêu cầu trước khi cài Docker

Bạn cần chuẩn bị:

  • VPS đang chạy Ubuntu 64-bit.
  • Tài khoản root hoặc người dùng có quyền sudo.
  • VPS có kết nối Internet.
  • Có quyền truy cập VPS bằng SSH.
  • Nên sao lưu dữ liệu nếu máy chủ đang vận hành dịch vụ.

Theo tài liệu Docker hiện hành, Docker Engine hỗ trợ các phiên bản Ubuntu 64-bit gồm Ubuntu 26.04 LTS, Ubuntu 25.10, Ubuntu 24.04 LTS và Ubuntu 22.04 LTS. Docker cũng hỗ trợ nhiều kiến trúc như amd64, arm64, armhf, s390xppc64le.

Kết nối đến VPS bằng lệnh:

ssh root@IP_VPS

Thay IP_VPS bằng địa chỉ IP thực tế của máy chủ.

Bước 1: Kiểm tra phiên bản Ubuntu

Trước khi cài đặt, hãy kiểm tra phiên bản hệ điều hành:

lsb_release -a

Hoặc:

cat /etc/os-release

Kiểm tra kiến trúc CPU:

dpkg --print-architecture

Kết quả phổ biến trên VPS là:

amd64

Bước 2: Cập nhật hệ thống

Cập nhật danh sách gói và nâng cấp các thành phần hiện có:

sudo apt update
sudo apt upgrade -y

Sau khi quá trình nâng cấp hoàn tất, bạn có thể khởi động lại VPS nếu kernel hoặc các gói hệ thống quan trọng vừa được cập nhật:

sudo reboot

Sau đó, kết nối SSH trở lại VPS.

Bước 3: Gỡ các gói Docker có thể gây xung đột

Ubuntu có thể đã cài một số gói Docker từ kho mặc định hoặc các công cụ có tên tương tự. Những gói như docker.io, docker-compose, docker-compose-v2, docker-buildx, podman-docker, containerdrunc có thể xung đột với phiên bản Docker Engine chính thức. Docker khuyến nghị gỡ các gói này trước khi tiếp tục cài đặt.

Chạy lệnh:

sudo apt remove $(dpkg --get-selections \
docker.io docker-compose docker-compose-v2 docker-doc \
docker-buildx podman-docker containerd runc | cut -f1)

Nếu hệ thống thông báo không có gói nào cần gỡ, bạn có thể tiếp tục bước tiếp theo.

Lệnh trên không tự động xóa image, container, network hoặc volume cũ nằm trong thư mục /var/lib/docker.

Bước 4: Cài các gói cần thiết

Cài đặt ca-certificatescurl để VPS có thể xác minh chứng chỉ và tải khóa xác thực của Docker:

sudo apt update
sudo apt install ca-certificates curl -y

Tạo thư mục chứa khóa:

sudo install -m 0755 -d /etc/apt/keyrings

Tải khóa GPG chính thức của Docker:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc

Cho phép hệ thống đọc khóa:

sudo chmod a+r /etc/apt/keyrings/docker.asc

Bước 5: Thêm kho phần mềm chính thức của Docker

Chạy nguyên khối lệnh sau:

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Sau đó cập nhật lại danh sách gói:

sudo apt update

Phương pháp thiết lập kho apt chính thức giúp Docker Engine, Docker CLI, Buildx và Docker Compose có thể được cài đặt và cập nhật thông qua hệ thống quản lý gói của Ubuntu.

Bước 6: Cài Docker Engine và Docker Compose

Cài toàn bộ 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

Các gói trên bao gồm:

  • docker-ce: Docker Engine.
  • docker-ce-cli: công cụ dòng lệnh Docker.
  • containerd.io: container runtime.
  • docker-buildx-plugin: công cụ build image nâng cao.
  • docker-compose-plugin: Docker Compose phiên bản plugin.

Docker Compose hiện đại sử dụng cú pháp:

docker compose

Thay vì cú pháp cũ:

docker-compose

Docker khuyến nghị cài Compose dưới dạng CLI plugin từ kho chính thức; bản standalone cũ chỉ còn được duy trì chủ yếu để tương thích ngược.

Bước 7: Kiểm tra trạng thái Docker

Kiểm tra Docker service:

sudo systemctl status docker

Nếu Docker chưa chạy, khởi động bằng lệnh:

sudo systemctl start docker

Bật Docker tự khởi động cùng VPS:

sudo systemctl enable docker
sudo systemctl enable containerd

Trên Ubuntu và Debian, Docker thường được cấu hình tự khởi động sau khi cài đặt. Hai lệnh trên giúp bạn xác nhận rõ Docker và containerd sẽ hoạt động sau mỗi lần VPS khởi động lại.

Kiểm tra phiên bản:

docker --version
docker compose version

Bước 8: Chạy container kiểm tra

Docker cung cấp image hello-world để xác nhận quá trình cài đặt:

sudo docker run hello-world

Lệnh này sẽ:

  1. Kiểm tra image hello-world trên VPS.
  2. Tải image từ registry nếu chưa có.
  3. Tạo một container.
  4. Chạy container và hiển thị thông báo xác nhận.
  5. Dừng container sau khi hoàn tất.

Nếu thấy thông báo:

Hello from Docker!

Docker đã được cài đặt thành công. Đây cũng là phương pháp xác minh chính thức được Docker hướng dẫn sau khi cài Docker Engine trên Ubuntu.

Bước 9: Chạy Docker không cần sudo

Theo mặc định, người dùng thông thường phải thêm sudo trước lệnh Docker vì Docker daemon sử dụng Unix socket thuộc quyền quản lý của root.

Thêm người dùng hiện tại vào nhóm docker:

sudo usermod -aG docker $USER

Áp dụng nhóm mới ngay trong phiên hiện tại:

newgrp docker

Kiểm tra:

docker run hello-world

Bạn cũng có thể đăng xuất rồi đăng nhập lại SSH để quyền nhóm được cập nhật.

Cần lưu ý rằng thành viên của nhóm docker có quyền ở mức tương đương root đối với hệ thống Docker. Vì vậy, không nên thêm tài khoản không đáng tin cậy vào nhóm này. Docker cũng cung cấp chế độ rootless dành cho những môi trường có yêu cầu giới hạn quyền chặt chẽ hơn.

Bước 10: Thử chạy máy chủ Nginx bằng Docker

Tạo một container Nginx và mở cổng 8080:

docker run -d \
  --name nginx-test \
  --restart unless-stopped \
  -p 8080:80 \
  nginx:latest

Kiểm tra container:

docker ps

Sau đó truy cập:

http://IP_VPS:8080

Nếu giao diện chào mừng của Nginx xuất hiện, container đã hoạt động chính xác.

Xem log:

docker logs nginx-test

Dừng container:

docker stop nginx-test

Khởi động lại:

docker start nginx-test

Xóa container:

docker rm -f nginx-test

Lưu ý về firewall khi sử dụng Docker

Docker tự tạo các quy tắc firewall để xử lý bridge network, NAT, chuyển tiếp cổng và cách ly mạng. Khi bạn publish một cổng bằng tùy chọn như -p 8080:80, cổng container có thể được định tuyến trước khi lưu lượng đi qua một số quy tắc thông thường của UFW. Vì vậy, không nên cho rằng chỉ cần chặn cổng bằng UFW là container chắc chắn không thể được truy cập từ Internet.

Docker khuyến nghị sử dụng chuỗi DOCKER-USER để bổ sung các quy tắc lọc lưu lượng trước những quy tắc chuyển tiếp của Docker. Bạn cũng không nên đặt cấu hình "iptables": false trong Docker daemon nếu chưa hiểu rõ kiến trúc mạng, vì việc này có thể làm hỏng kết nối Internet và bridge network của container.

Khi không cần công khai cổng ra Internet, chỉ nên bind vào localhost:

docker run -d -p 127.0.0.1:8080:80 nginx

Khi đó, dịch vụ chỉ có thể được truy cập trực tiếp từ VPS hoặc thông qua reverse proxy được cấu hình riêng.

Cách cập nhật Docker trên Ubuntu

Cập nhật danh sách gói:

sudo apt update

Nâng cấp Docker:

sudo apt install --only-upgrade \
docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin

Kiểm tra lại:

docker --version
docker compose version

Trong hệ thống production, nên sao lưu dữ liệu và kiểm tra phiên bản mới trên môi trường thử nghiệm trước khi thực hiện nâng cấp lớn.

Một số lỗi thường gặp

Không kết nối được Docker daemon

Lỗi:

Cannot connect to the Docker daemon

Kiểm tra và khởi động Docker:

sudo systemctl restart docker
sudo systemctl status docker

Permission denied khi chạy Docker

Thêm người dùng vào nhóm Docker:

sudo usermod -aG docker $USER
newgrp docker

Container chạy nhưng không truy cập được

Kiểm tra container và port:

docker ps
docker port TEN_CONTAINER

Kiểm tra cổng đang lắng nghe:

sudo ss -lntp

Kiểm tra log:

docker logs TEN_CONTAINER

Docker chiếm nhiều dung lượng

Kiểm tra dung lượng:

docker system df

Dọn image, network và container không còn sử dụng:

docker system prune

Không nên thêm -a hoặc xóa volume khi chưa kiểm tra kỹ, vì có thể xóa image cần thiết hoặc dữ liệu ứng dụng.

Kết luận

Cài Docker trên VPS Ubuntu bằng kho apt chính thức là phương pháp dễ quản lý và phù hợp cho hệ thống sử dụng lâu dài. Sau khi hoàn tất, bạn có thể triển khai website, API, Nginx, MySQL, MongoDB, Redis, Bot Discord hoặc các hệ thống sử dụng Docker Compose.

Bên cạnh việc cài đặt thành công, người quản trị cần chú ý đến firewall, phân quyền nhóm Docker, sao lưu volume, giới hạn tài nguyên và theo dõi dung lượng log. Một cấu hình Docker đúng không chỉ giúp ứng dụng khởi động được mà còn phải bảo đảm dữ liệu an toàn và hệ thống có thể phục hồi khi xảy ra sự cố.

ObeGames cung cấp VPS Hosting và VPS NVMe phù hợp để cài đặt Docker, Docker Compose, website, database, Bot Discord và nhiều ứng dụng trực tuyến cần vận hành liên tục.

Chia sẻ:
Có thể bạn quan tâm

Bài viết liên quan