Docker là gì? Hướng dẫn triển khai ứng dụng trên VPS
Tìm hiểu Docker là gì, cách container giúp đóng gói ứng dụng và các bước cài Docker trên VPS. Bài viết hướng dẫn tạo image, chạy ứng dụng bằng Docker Compose và một số lưu ý vận hành.
Docker giúp đóng gói ứng dụng cùng các thành phần cần thiết để ứng dụng hoạt động, sau đó chạy chúng trong những môi trường được gọi là container. Nhờ vậy, bạn có thể giảm tình trạng ứng dụng chạy tốt trên máy cá nhân nhưng gặp lỗi khi chuyển lên máy chủ. Bài viết dưới đây giải thích Docker là gì và hướng dẫn triển khai ứng dụng Docker cơ bản trên VPS Ubuntu.
Docker là gì?
Minh họa Docker đóng gói ứng dụng trong các container trên máy chủ
Docker là nền tảng hỗ trợ xây dựng, đóng gói và chạy ứng dụng trong container. Một container chứa ứng dụng cùng thư viện, cấu hình và các phụ thuộc cần thiết, nhưng sử dụng chung nhân hệ điều hành với máy chủ. Vì vậy, container thường gọn nhẹ hơn máy ảo hoàn chỉnh và có thể khởi động nhanh.
Để hiểu Docker, bạn có thể hình dung quy trình như đóng gói một bộ dụng cụ: thay vì chỉ gửi mã nguồn, nhà phát triển đưa cả những thành phần ứng dụng cần dùng vào cùng một gói. Khi chuyển gói đó sang VPS khác có Docker, ứng dụng có thể khởi chạy theo cấu hình đã định nghĩa.
Một số khái niệm quan trọng:
Image: Mẫu đóng gói bất biến dùng để tạo container. Image có thể được xây dựng từ Dockerfile hoặc tải từ kho lưu trữ.
Container: Phiên bản đang chạy của một image. Một image có thể tạo nhiều container độc lập.
Dockerfile: Tệp mô tả các bước tạo image, chẳng hạn chọn môi trường nền, sao chép mã nguồn và khai báo lệnh chạy.
Docker Compose: Công cụ khai báo và vận hành một hoặc nhiều container bằng tệp cấu hình YAML.
Volume: Cơ chế lưu dữ liệu bên ngoài vòng đời container, thường dùng cho dữ liệu cần giữ lại như tệp tải lên hoặc cơ sở dữ liệu.
Docker không thay thế VPS. VPS vẫn cung cấp hệ điều hành, CPU, RAM, dung lượng lưu trữ và kết nối mạng; Docker giúp bạn quản lý cách ứng dụng chạy trên máy chủ đó.
Vì sao nên triển khai ứng dụng bằng Docker trên VPS?
Triển khai ứng dụng Docker trên VPS giúp quy trình cài đặt dễ tái lập hơn. Thay vì cài từng thư viện thủ công trên máy chủ, bạn mô tả môi trường trong Dockerfile hoặc Compose rồi dùng cấu hình đó để tạo lại dịch vụ khi cần.
Một số lợi ích thực tế gồm:
Môi trường nhất quán: Cấu hình ứng dụng được đóng gói rõ ràng, giảm khác biệt giữa máy phát triển và máy chạy thật.
Quản lý dịch vụ thuận tiện: Có thể khởi động, dừng, xem trạng thái hoặc thay image bằng các lệnh Docker.
Tách biệt ứng dụng: Mỗi container có môi trường riêng, giúp hạn chế xung đột thư viện giữa các dịch vụ.
Dễ mở rộng cấu hình: Compose cho phép mô tả nhiều dịch vụ, mạng nội bộ và volume trong một tệp.
Docker không tự động bảo đảm ứng dụng an toàn, hoạt động liên tục hay có thể mở rộng không giới hạn. Bạn vẫn cần cập nhật image, sao lưu dữ liệu, cấu hình tường lửa và theo dõi tài nguyên VPS. Container cũng không nên được xem là bản sao lưu: dữ liệu quan trọng cần được lưu trữ và sao lưu riêng.
Chuẩn bị trước khi cài Docker trên VPS
Trước khi cài Docker trên VPS, hãy chuẩn bị một máy chủ chạy Ubuntu, tài khoản có quyền sudo và thông tin SSH để đăng nhập. Bạn cũng cần một tên miền nếu muốn người dùng truy cập ứng dụng qua tên miền; phần hướng dẫn mẫu bên dưới dùng cổng IP để đơn giản hóa.
Kiểm tra hệ điều hành và cập nhật danh sách gói:
lsb_release -a
sudo apt update
sudo apt upgrade -y
Hãy chọn VPS có tài nguyên phù hợp với ứng dụng. Dịch vụ cần nhiều bộ nhớ, xử lý nền hoặc lưu lượng lớn sẽ đòi hỏi cấu hình khác với trang thử nghiệm nhỏ. Nếu đang tìm máy chủ để bắt đầu, VibeVPS có các gói VPS AMD EPYC Gen 3 và VPS Platinum Gen 2 từ 81.000đ/tháng; hãy đối chiếu nhu cầu thực tế với thông tin cấu hình trước khi chọn.
Cài Docker trên VPS Ubuntu
Quản trị viên cài Docker trên VPS Ubuntu
Các lệnh sau thêm kho lưu trữ chính thức của Docker trên Ubuntu rồi cài Docker Engine và Docker Compose plugin. Chạy lần lượt bằng tài khoản có quyền sudo:
Xác nhận Docker hoạt động và kiểm tra phiên bản Compose:
sudo docker run hello-world
docker compose version
Lệnh hello-world tải image kiểm tra và chạy một container mẫu. Nếu thấy thông báo xác nhận, Docker Engine đã có thể chạy container. Trong một số môi trường, bạn có thể cần mở cổng ứng dụng trên tường lửa VPS, đồng thời kiểm tra cả tường lửa của hệ điều hành nếu đã bật.
Các lệnh trong bài dùng sudo docker để tránh cấp thêm quyền cho tài khoản. Có thể thêm người dùng vào nhóm docker để chạy lệnh không cần sudo, nhưng nhóm này có quyền rất cao, gần tương đương quyền quản trị máy chủ. Chỉ thực hiện khi hiểu rủi ro và tin cậy người dùng được cấp quyền.
Triển khai ứng dụng Docker đầu tiên
Quy trình đóng gói image và chạy ứng dụng Docker trên VPS
Ví dụ sau tạo một trang tĩnh bằng Nginx. Trước tiên, tạo thư mục dự án và một trang HTML:
mkdir -p ~/docker-demo
cd ~/docker-demo
cat > index.html <<'EOF'
<!doctype html>
<html lang="vi">
<meta charset="utf-8">
<title>Ứng dụng Docker</title>
<h1>Ứng dụng đã chạy trên VPS</h1>
</html>
EOF
Tạo tệp Dockerfile để hướng dẫn Docker đóng gói trang web vào image:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
FROM chọn image nền có sẵn Nginx. COPY đưa tệp HTML vào thư mục mà Nginx dùng để phục vụ nội dung. Với ứng dụng thực tế, Dockerfile thường có thêm bước cài phụ thuộc, biên dịch mã nguồn và thiết lập lệnh khởi chạy phù hợp.
Trong cấu hình này, Compose xây dựng image từ thư mục hiện tại, sau đó ánh xạ cổng 80 của VPS vào cổng 80 trong container. Chính sách unless-stopped yêu cầu Docker khởi động lại dịch vụ khi container dừng bất ngờ hoặc Docker được khởi động lại, trừ khi bạn chủ động dừng dịch vụ.
Khởi tạo và chạy ứng dụng ở chế độ nền:
sudo docker compose up -d --build
Mở trình duyệt và truy cập địa chỉ IP của VPS. Nếu cổng 80 đã được cho phép và chưa bị dịch vụ khác sử dụng, trang HTML sẽ xuất hiện. Nếu ứng dụng dùng cổng khác, thay phần ánh xạ cổng trong Compose và cho phép đúng cổng đó trên tường lửa.
ps xem trạng thái dịch vụ, logs -f theo dõi nhật ký, restart khởi động lại ứng dụng và down dừng, gỡ container cùng mạng do Compose tạo. Lệnh down không xóa image hay dữ liệu trong volume trừ khi bạn yêu cầu thêm tùy chọn xóa, nhưng hãy kiểm tra kỹ trước khi thao tác trên hệ thống đang chạy thật.
Lưu ý khi vận hành Docker trên VPS
Để ứng dụng chạy ổn định và dễ bảo trì, hãy lưu ý các điểm sau:
Không lưu dữ liệu quan trọng chỉ trong container: Container có thể bị thay thế khi cập nhật. Với cơ sở dữ liệu hoặc nội dung do người dùng tạo, hãy cấu hình volume và sao lưu định kỳ.
Quản lý biến môi trường: Không đưa mật khẩu, khóa API hoặc thông tin nhạy cảm vào image hay kho mã nguồn công khai. Hạn chế quyền truy cập tệp cấu hình chứa bí mật.
Cập nhật có kiểm soát: Chọn phiên bản image phù hợp, kiểm tra thay đổi và sao lưu dữ liệu trước khi cập nhật. Tránh cập nhật mù quáng trên môi trường quan trọng.
Theo dõi nhật ký và tài nguyên: Kiểm tra log khi dịch vụ lỗi; theo dõi mức sử dụng CPU, RAM và dung lượng đĩa để phát hiện vấn đề sớm.
Chỉ mở cổng cần thiết: Không công khai cổng quản trị hoặc cổng nội bộ nếu ứng dụng không yêu cầu. Khi đưa website vào vận hành, nên cân nhắc cấu hình HTTPS và tên miền.
Dọn dẹp thận trọng: Image cũ và container không sử dụng có thể chiếm dung lượng. Trước khi xóa tài nguyên, hãy xác nhận chúng không còn được dịch vụ nào sử dụng.
Mẫu Nginx ở trên phù hợp để kiểm tra quy trình cơ bản, chưa phải cấu hình hoàn chỉnh cho mọi ứng dụng thực tế. Một hệ thống có nhiều dịch vụ có thể cần thêm reverse proxy, chứng chỉ HTTPS, cơ sở dữ liệu, chính sách sao lưu và quy trình cập nhật riêng.
Tổng kết
Docker đóng gói ứng dụng thành image và chạy image đó trong container, giúp việc triển khai giữa các môi trường rõ ràng, nhất quán hơn. Để triển khai ứng dụng Docker trên VPS, bạn cần cài Docker Engine, tạo Dockerfile, khai báo dịch vụ bằng Compose, mở cổng cần thiết rồi kiểm tra trạng thái và nhật ký.
Hãy bắt đầu với ứng dụng đơn giản, sau đó bổ sung volume, bảo mật và sao lưu trước khi đưa dữ liệu quan trọng vào sử dụng. Nếu cần một máy chủ để thử nghiệm hoặc triển khai ứng dụng, bạn có thể tham khảo các gói VPS của VibeVPS và chọn tài nguyên phù hợp với nhu cầu của mình.
Hướng dẫn cài WordPress trên VPS qua từng bước: chuẩn bị máy chủ, cài Nginx, PHP và MariaDB, cấu hình website, bật HTTPS rồi kiểm tra trước khi đưa vào sử dụng.