Cài đặt Docker Engine mới nhất trên Ubuntu 24.04
Cập nhật repository và cài đặt dependencies
Trước khi cài đặt Docker Engine, cần cập nhật hệ thống gói phần mềm và cài đặt các thư viện cần thiết để Docker giao tiếp với kernel Linux.
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release -y
Kết quả mong đợi: Quá trình cập nhật và cài đặt dependencies hoàn thành không báo lỗi, các gói như ca-certificates và curl đã sẵn sàng.
Thêm GPG key và repository chính thức của Docker
Sử dụng repository chính thức của Docker để đảm bảo nhận được bản cập nhật mới nhất, an toàn và tương thích tốt nhất với Ubuntu 24.04.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Kết quả mong đợi: File khóa GPG được tạo tại /etc/apt/keyrings/docker.gpg với quyền đọc đúng chuẩn.
Định nghĩa source list cho repository Docker Engine, sử dụng biến môi trường để tự động lấy version Ubuntu (noble cho 24.04).
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Kết quả mong đợi: File docker.list được tạo tại thư mục sources.list.d, hệ thống nhận diện được source mới.
Cài đặt Docker Engine và các components liên quan
Cài đặt docker-ce (Engine chính), docker-ce-cli (CLI), containerd.io (runtime), và docker-buildx-plugin (build plugin).
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Kết quả mong đợi: Docker Engine được cài đặt thành công, không có cảnh báo lỗi về missing dependencies.
Verify phiên bản Docker Engine
Khởi động service Docker và kiểm tra phiên bản đã cài để xác nhận hoạt động đúng.
sudo systemctl start docker
sudo systemctl enable docker
docker --version
Kết quả mong đợi: In ra dòng phiên bản Docker Engine, ví dụ: Docker version 24.0.x, build abc123.
Cấu hình Docker Daemon để tối ưu hóa hiệu năng
Điều chỉnh Storage Driver và Log Driver
Milvus hoạt động tốt nhất với storage driver là `overlay2` (mặc định trên Ubuntu) và log driver là `json-file` với giới hạn size để tránh tràn disk. Cấu hình này giúp giảm overhead I/O khi container ghi log.
Chỉnh sửa file cấu hình daemon của Docker tại đường dẫn `/etc/docker/daemon.json`.
sudo mkdir -p /etc/docker
cat > /etc/docker/daemon.json
Kết quả mong đợi: File /etc/docker/daemon.json được tạo với nội dung chính xác, không có lỗi cú pháp JSON.
Khởi động lại Docker Daemon
Áp dụng các thay đổi trong file cấu hình bằng cách restart service Docker.
sudo systemctl restart docker
Kết quả mong đợi: Service Docker khởi động lại thành công, không báo lỗi "daemon failed to start".
Verify cấu hình Daemon
Đảm bảo các thông số cấu hình đã được áp dụng thực tế vào runtime của Docker.
docker info | grep -E "Storage driver|Logging driver|Cgroup Driver"
Kết quả mong đợi: Output hiển thị Storage driver: overlay2, Logging driver: json-file, và Cgroup Driver: systemd.
Cấu hình quyền truy cập Docker không cần sudo
Thêm user vào nhóm docker
Để tránh phải gõ `sudo` trước mọi lệnh docker, cần thêm user hiện tại vào nhóm `docker`. Điều này trao quyền điều khiển socket Docker cho user đó.
sudo usermod -aG docker $USER
Kết quả mong đợi: Lệnh chạy xong, không báo lỗi, user hiện tại đã được thêm vào nhóm docker.
Áp dụng quyền nhóm ngay lập tức
Thay vì logout và login lại, sử dụng lệnh `newgrp` để kích hoạt nhóm mới cho session hiện tại ngay lập tức.
newgrp docker
Kết quả mong đợi: Prompt terminal thay đổi, quyền truy cập Docker đã có hiệu lực.
Verify quyền truy cập
Chạy lệnh docker mà không kèm sudo để xác nhận quyền đã được cấp đúng.
docker run hello-world
Kết quả mong đợi: Container hello-world chạy thành công, in ra thông báo "Hello from Docker!" và dừng lại. Không xuất hiện lỗi "permission denied" hay yêu cầu sudo.
Cài đặt Docker Compose V2
Đảm bảo Docker Compose Plugin đã có sẵn
Trên Ubuntu 24.04 với Docker Engine mới nhất, Docker Compose V2 được cài đặt dưới dạng plugin (`docker compose`) thay vì binary riêng biệt. Nếu đã cài `docker-compose-plugin` ở bước đầu, nó đã sẵn sàng.
docker compose version
Kết quả mong đợi: In ra phiên bản Docker Compose V2, ví dụ: Docker Compose version v2.24.x.
Xác minh plugin hoạt động
Kiểm tra xem lệnh compose có được nhận diện là plugin của Docker hay không.
docker compose config --help | head -n 5
Kết quả mong đợi: Hiển thị help text của lệnh compose, xác nhận plugin hoạt động bình thường.
Tắt SELinux và AppArmor cho Milvus
Kiểm tra trạng thái SELinux
Ubuntu thường không bật SELinux mặc định, nhưng cần kiểm tra để đảm bảo nó không can thiệp vào container Milvus nếu đã được bật.
getenforce
Kết quả mong đợi: Trả về `Disabled` hoặc `Permissive`. Nếu trả về `Enforcing`, cần tắt nó.
Tắt SELinux (nếu đang Enforcing)
Chuyển SELinux sang chế độ Permissive để ngăn chặn các quy tắc bảo mật quá khắt khe làm sập container Milvus.
sudo setenforce 0
Kết quả mong đợi: Không có lỗi, trạng thái SELinux chuyển sang Permissive. Để tắt vĩnh viễn cần sửa file /etc/selinux/config, nhưng setenforce 0 là đủ cho session hiện tại.
Kiểm tra và cấu hình AppArmor
Ubuntu 24.04 sử dụng AppArmor mặc định. Docker thường tự động tạo profile, nhưng đôi khi cần tắt AppArmor cho các container đặc biệt nếu gặp lỗi `Permission denied` khi mount volume.
sudo aa-status | grep docker
Kết quả mong đợi: Xem danh sách các profile AppArmor đang áp dụng cho Docker. Nếu không thấy profile cụ thể hoặc muốn tắt hoàn toàn để test, hãy tiếp tục bước sau.
Tắt AppArmor trong Docker Daemon (Tùy chọn)
Nếu gặp sự cố tương thích với AppArmor, có thể thêm tùy chọn `--userns-remap` hoặc tắt AppArmor trong daemon.json. Tuy nhiên, cách an toàn nhất là thêm flag `security_opt` vào docker-compose.yml sau này. Ở đây ta kiểm tra khả năng tắt profile mặc định.
Sửa lại file `/etc/docker/daemon.json` để thêm cấu hình AppArmor (chỉ thực hiện nếu cần tắt hoàn toàn).
sudo systemctl stop docker
cat > /etc/docker/daemon.json
Kết quả mong đợi: Docker khởi động lại. Lưu ý: Việc thêm `apparmor=unconfined` vào daemon.json là cách tắt AppArmor toàn cục. Nếu chỉ muốn tắt cho Milvus, hãy bỏ dòng `security-opt` này và cấu hình trong file docker-compose.yml ở phần sau.
Verify trạng thái bảo mật cuối cùng
Kiểm tra lại cấu hình daemon để đảm bảo các thiết lập bảo mật đã được áp dụng.
docker info | grep "Security Option"
Kết quả mong đợi: Hiển thị danh sách các security options đang active (ví dụ: seccomp, apparmor, rootless). Nếu đã cấu hình tắt apparmor, nó sẽ hiển thị `apparmor: unconfined`.
Điều hướng series:
Mục lục: Series: Triển khai Database Vector với Milvus và Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và yêu cầu hệ thống cho Milvus
Phần 3: Khởi tạo Milvus Standalone từ Docker Compose »