Tự động hóa cài đặt Docker bằng Bash Script
Khi làm việc với nhiều server, việc cài đặt Docker thủ công từng bước trên mỗi máy là tốn thời gian và dễ sai sót. Giải pháp đơn giản nhất là viết một Bash Script tự động hóa toàn bộ quá trình — từ cài đặt dependencies, thêm Docker repository, đến cài đặt Docker Engine và Docker Compose.
Trong bài viết này, tôi sẽ hướng dẫn bạn viết script cài đặt Docker theo đúng tài liệu chính thức của Docker, đảm bảo luôn lấy phiên bản mới nhất từ repository chính thức.
Yêu cầu hệ thống
Trước khi bắt đầu, hãy đảm bảo server của bạn đáp ứng các điều kiện sau:
| Yêu cầu | Chi tiết |
|---|---|
| Hệ điều hành | Ubuntu 22.04 (Jammy), 24.04 (Noble), 25.10 (Questing), 26.04 (Resolute) |
| Kiến trúc | x86_64 (amd64), arm64, armhf, s390x, ppc64le |
| Quyền | Tài khoản có quyền sudo |
| Kết nối mạng | Có kết nối Internet để tải packages |
Gỡ cài đặt phiên bản Docker cũ (nếu có)
Theo tài liệu chính thức của Docker, trước khi cài đặt Docker Engine, bạn cần gỡ bỏ các package xung đột có thể đã được cài sẵn bởi hệ điều hành:
| |
Lưu ý: Lệnh trên có thể báo rằng không có package nào được cài — điều này hoàn toàn bình thường trên server mới.
Viết Bash Script cài đặt Docker
Tạo file script
| |
Nội dung script
| |
Giải thích từng bước trong script:
| Bước | Lệnh | Mục đích |
|---|---|---|
| 1 | apt install ca-certificates curl gnupg | Cài các package cần thiết để xác thực GPG key và tải file qua HTTPS |
| 2 | curl ... | gpg --dearmor | Tải và chuyển đổi GPG key của Docker sang định dạng binary để apt xác thực package |
| 3 | tee /etc/apt/sources.list.d/docker.list | Thêm Docker repository vào danh sách sources của apt, tự động detect kiến trúc và codename |
| 4 | apt install docker-ce ... | Cài đặt Docker Engine, CLI, containerd, Buildx plugin và Compose plugin |
| 5 | systemctl start/enable docker | Khởi động Docker daemon và cấu hình tự khởi động cùng hệ thống |
Lưu ý quan trọng: Script sử dụng
docker-compose-plugin(Compose V2) thay vìdocker-composestandalone (V1). Compose V2 được tích hợp trực tiếp vào Docker CLI với lệnhdocker compose(không có dấu gạch ngang). Docker đã ngừng hỗ trợ Compose V1 từ tháng 7/2023.
Cấp quyền và chạy script
| |
Xác nhận kết quả cài đặt
Sau khi script chạy xong, bạn sẽ thấy output tương tự:
| |
Để kiểm tra Docker hoạt động chính xác, chạy container thử nghiệm:
| |
Nếu thấy thông báo Hello from Docker!, quá trình cài đặt đã thành công.
Cấu hình sau cài đặt (Post-installation)
Cho phép user thường chạy Docker (không cần sudo)
Theo mặc định, lệnh docker yêu cầu quyền root. Để user thường có thể sử dụng Docker:
| |
Cấu hình Docker khởi động cùng hệ thống
Script đã thực hiện bước này với systemctl enable docker. Để xác nhận:
| |
Ghi chú triển khai
- Khi áp dụng vào dự án của bạn, hãy lưu ý:
- Script chỉ hỗ trợ Ubuntu. Với Debian, CentOS, hoặc Fedora, cần thay đổi URL repository và lệnh package manager tương ứng
- Luôn kiểm tra tài liệu chính thức để đảm bảo các bước cài đặt chưa thay đổi
set -eở đầu script đảm bảo script dừng ngay khi có lệnh bị lỗi, tránh cài đặt không đầy đủ
- Best practices:
- Sử dụng
docker compose(V2) thay vìdocker-compose(V1) — V1 đã ngừng hỗ trợ - Không chạy container bằng user
roottrong production — cấu hình user thường với groupdocker - Sau khi cài đặt, cấu hình Docker daemon phù hợp với môi trường (log driver, storage driver, v.v.)
- Sử dụng
- Troubleshooting:
- Lỗi
Permission deniedkhi chạydocker? → Đảm bảo user đã được thêm vào groupdockervà đã logout/login lại - Lỗi
Cannot connect to the Docker daemon? → Kiểm tra Docker service:sudo systemctl status docker - GPG key bị lỗi khi
apt update? → Xóa key cũ và chạy lại bước thêm GPG key:sudo rm /etc/apt/keyrings/docker.gpg
- Lỗi
🎯 Lời kết
Với Bash Script trên, bạn có thể cài đặt Docker Engine và Docker Compose trên bất kỳ server Ubuntu nào chỉ với một lệnh duy nhất. Script sử dụng phương pháp cài đặt chính thức từ Docker repository, đảm bảo:
- Luôn lấy phiên bản mới nhất từ repository chính thức
- Cài đặt đầy đủ: Docker Engine, CLI, containerd, Buildx, và Compose V2
- Tự động khởi động và enable Docker service
Bạn có thể lưu script này vào hệ thống quản lý cấu hình (Ansible, Terraform) hoặc đơn giản clone từ repository để sử dụng trên nhiều server. 🚀
Tài liệu tham khảo
- Docker Official - Install Docker Engine on Ubuntu — Hướng dẫn chính thức cài đặt Docker trên Ubuntu
- Docker Official - Post-installation steps for Linux — Cấu hình sau cài đặt
- Docker Compose - Migrate to Compose V2 — Hướng dẫn chuyển từ Compose V1 sang V2
