Roadmap Docker: Hướng dẫn Cài đặt Docker trên Windows, Mac và Linux

Xin chào những người đồng hành trên con đường Docker Roadmap!

Trong loạt bài viết này, chúng ta đã cùng nhau khám phá những khái niệm nền tảng như Container là gì và vì sao mỗi lập trình viên nên tìm hiểu, sự khác biệt giữa Container, Máy ảo (VM) và Bare Metal, hay Hiểu về Docker và Tiêu chuẩn OCI. Chúng ta cũng đã trang bị những kiến thức cơ bản về Linux, Package Managers, Người dùng, Nhóm và Quyền hạn, cũng như các lệnh Shell cần thiết để chuẩn bị cho hành trình container hóa. Để bắt đầu biến những lý thuyết đó thành thực tế, bước đầu tiên và quan trọng nhất chính là cài đặt Docker trên hệ điều hành của bạn.

Docker hoạt động mượt mà trên cả ba hệ điều hành phổ biến nhất hiện nay: Windows, macOS và Linux. Mặc dù mục tiêu cuối cùng là giống nhau (chạy container), cách tiếp cận cài đặt lại có những khác biệt đáng kể trên mỗi nền tảng. Bài viết này sẽ hướng dẫn chi tiết từng bước để bạn có thể cài đặt Docker và sẵn sàng bước vào thế giới container.

1. Chuẩn Bị Trước Khi Cài Đặt

Trước khi bắt tay vào cài đặt Docker, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu cơ bản:

  • Kết nối Internet ổn định: Bạn cần tải về bộ cài đặt hoặc các gói phần mềm từ internet.
  • Hệ điều hành tương thích: Docker hỗ trợ các phiên bản hệ điều hành cụ thể. Hãy kiểm tra trang tài liệu chính thức của Docker để biết phiên bản tối thiểu được hỗ trợ cho Windows, macOS và các bản phân phối Linux.
  • Bật ảo hóa (Virtualization): Docker Desktop trên Windows và macOS sử dụng máy ảo nhẹ để chạy Docker Engine (trên Windows hiện đại là thông qua WSL 2). Bạn cần đảm bảo tính năng ảo hóa (Intel VT-x hoặc AMD-V) đã được bật trong BIOS/UEFI của máy tính.
  • Quyền quản trị: Bạn sẽ cần quyền quản trị (Administrator trên Windows, sudo trên Linux, hoặc quyền cài đặt ứng dụng trên macOS) để thực hiện các bước cài đặt.

2. Cài Đặt Docker trên Windows

Trên Windows, cách phổ biến và được khuyến nghị nhất là sử dụng Docker Desktop. Docker Desktop cho Windows cung cấp một giao diện đồ họa thân thiện và tích hợp tốt với hệ thống, bao gồm cả việc sử dụng WSL 2 (Windows Subsystem for Linux phiên bản 2) để chạy Docker Engine, mang lại hiệu năng tốt hơn.

Yêu cầu hệ thống cho Docker Desktop trên Windows:

  • Windows 11 64-bit: Home hoặc Pro 21H2 trở lên, hoặc Enterprise hoặc Education 21H2 trở lên.
  • Windows 10 64-bit: Home hoặc Pro 21H2 (Build 19044) trở lên, hoặc Enterprise hoặc Education 20H2 (Build 19042) trở lên.
  • WSL 2 Backend: Phải được bật. Hướng dẫn cài đặt WSL 2 thường có trên trang web của Microsoft. Docker Desktop sẽ hỗ trợ cài đặt WSL 2 nếu cần.
  • Tính năng Virtual Machine Platform và WSL phải được bật.
  • BIOS: Tính năng ảo hóa phải được bật.
  • Tối thiểu 4GB RAM hệ thống.

Các bước cài đặt:

  1. Tải Docker Desktop Installer: Truy cập trang web chính thức của Docker (https://www.docker.com/products/docker-desktop/) và tải về bản cài đặt cho Windows.
  2. Chạy bộ cài đặt: Tìm file Docker Desktop Installer.exe vừa tải về và chạy nó.
  3. Cấu hình cài đặt:
    • Đảm bảo tùy chọn “Use WSL 2 instead of Hyper-V” (Sử dụng WSL 2 thay vì Hyper-V) được tích chọn. Đây là tùy chọn được khuyến nghị vì hiệu năng và khả năng tương thích tốt hơn. Nếu hệ thống của bạn chưa cài WSL 2, trình cài đặt sẽ hướng dẫn bạn thực hiện hoặc tự động cài đặt.
    • Bạn có thể chọn thêm shortcut vào desktop nếu muốn.
  4. Hoàn thành cài đặt: Nhấp vào “Install” và chờ quá trình hoàn tất. Trình cài đặt sẽ tự động cấu hình và thiết lập môi trường Docker cho bạn.
  5. Khởi động lại máy tính: Sau khi cài đặt xong, bạn sẽ được yêu cầu khởi động lại máy tính để hoàn tất cấu hình.
  6. Khởi chạy Docker Desktop: Tìm và mở ứng dụng “Docker Desktop” từ menu Start. Lần đầu khởi chạy, Docker Desktop có thể yêu cầu bạn chấp nhận các điều khoản dịch vụ và hoàn tất một số bước cấu hình ban đầu.

Kiểm tra cài đặt:

Mở Command Prompt hoặc PowerShell và chạy các lệnh sau:

docker --version
docker compose version

Nếu các lệnh này hiển thị phiên bản của Docker và Docker Compose, nghĩa là quá trình cài đặt đã thành công. Để kiểm tra thêm, chạy container hello-world:

docker run hello-world

Nếu bạn thấy thông báo xác nhận rằng Docker đang hoạt động, xin chúc mừng, bạn đã cài đặt Docker thành công trên Windows!

Khắc phục sự cố thường gặp trên Windows:

  • Lỗi WSL 2 not installed/updated: Truy cập trang web của Microsoft để cài đặt hoặc cập nhật WSL 2 theo hướng dẫn chính thức. Đảm bảo bạn đã cài đặt một bản phân phối Linux trong WSL 2 (ví dụ: Ubuntu) và đặt nó làm bản phân phối mặc định.
  • Ảo hóa bị tắt trong BIOS/UEFI: Khởi động lại máy tính, vào BIOS/UEFI (thường là nhấn F2, F10, F12, hoặc Del khi khởi động) và tìm tùy chọn liên quan đến “Virtualization Technology” (VT-x cho Intel, AMD-V cho AMD), đảm bảo nó được Enabled.
  • Docker Desktop stuck on “Starting”: Thử khởi động lại Docker Desktop. Kiểm tra xem dịch vụ “Docker Desktop Service” có đang chạy trong Services (services.msc) không. Đảm bảo tài khoản người dùng của bạn có đủ quyền hạn.

3. Cài Đặt Docker trên macOS

Tương tự như Windows, Docker Desktop là cách dễ dàng và hiệu quả nhất để cài đặt Docker trên macOS. Docker Desktop cho Mac sử dụng một máy ảo Linux nhẹ (trước đây là HyperKit, giờ dựa trên Virtualization framework mới hơn của Apple) để chạy Docker Engine.

Yêu cầu hệ thống cho Docker Desktop trên macOS:

  • macOS phiên bản 11 (Big Sur) trở lên.
  • Chip Intel hoặc Apple Silicon (M1, M2, M3…).
  • Tối thiểu 4GB RAM.

Các bước cài đặt:

  1. Tải Docker Desktop Installer: Truy cập trang web chính thức của Docker (https://www.docker.com/products/docker-desktop/) và tải về bản cài đặt cho macOS (chọn đúng bản cho chip Intel hoặc Apple Silicon).
  2. Mở file .dmg: Tìm file Docker.dmg vừa tải về và mở nó. Thao tác này sẽ mount image và hiển thị cửa sổ cài đặt.
  3. Cài đặt ứng dụng: Kéo icon “Docker” vào thư mục “Applications”.
  4. Chạy Docker Desktop: Mở thư mục “Applications” và chạy ứng dụng “Docker”.
  5. Phân quyền: Lần đầu chạy, macOS sẽ yêu cầu bạn xác nhận và có thể yêu cầu nhập mật khẩu quản trị để cấp quyền cho Docker cài đặt các thành phần hỗ trợ.
  6. Hoàn tất cấu hình: Docker Desktop sẽ khởi động và hiển thị biểu tượng con cá voi trên thanh menu bar. Bạn có thể cần chấp nhận các điều khoản dịch vụ và hoàn thành một vài bước thiết lập ban đầu.

Kiểm tra cài đặt:

Mở Terminal (tìm trong Spotlight hoặc Applications > Utilities) và chạy các lệnh sau:

docker --version
docker compose version

Nếu các lệnh này hiển thị phiên bản, bạn đã cài đặt Docker thành công. Chạy container hello-world để kiểm tra cuối cùng:

docker run hello-world

Nếu mọi thứ hoạt động như mong đợi, bạn đã sẵn sàng làm việc với Docker trên Mac.

Khắc phục sự cố thường gặp trên macOS:

  • Yêu cầu quyền truy cập/mật khẩu liên tục: Đảm bảo tài khoản người dùng của bạn là tài khoản quản trị và bạn đã cấp đủ quyền cho Docker khi được yêu cầu.
  • Resource Allocation (Phân bổ tài nguyên): Nếu Docker chạy chậm hoặc ứng dụng container bị lỗi Out Of Memory, bạn có thể điều chỉnh lượng CPU và RAM mà Docker Desktop được phép sử dụng trong phần Settings/Preferences của ứng dụng Docker Desktop.
  • Không tìm thấy lệnh docker trong Terminal: Đảm bảo Docker Desktop đang chạy và đã hoàn tất khởi động. Thử đóng và mở lại Terminal. Docker Desktop thường tự động thêm các lệnh vào PATH của bạn.

4. Cài Đặt Docker trên Linux

Trên Linux, Docker Engine thường được cài đặt trực tiếp trên hệ điều hành mà không cần máy ảo trung gian (như Docker Desktop trên Windows/macOS sử dụng máy ảo nhẹ). Quá trình cài đặt chủ yếu sử dụng các lệnh dòng lệnh và trình quản lý gói của bản phân phối Linux bạn đang dùng. Chúng ta sẽ tập trung vào hai hệ thống quản lý gói phổ biến nhất là apt (Debian/Ubuntu) và yum/dnf (CentOS/RHEL/Fedora).

Nếu bạn chưa quen với môi trường dòng lệnh Linux hoặc các trình quản lý gói, hãy tham khảo lại các bài viết Bắt Đầu Với LinuxPackage Managers 101 trong series này.

Cài đặt Docker Engine trên Debian/Ubuntu:

Các bước này hướng dẫn cách cài đặt Docker Engine sử dụng repository chính thức của Docker, đảm bảo bạn luôn nhận được phiên bản mới nhất.

  1. Gỡ cài đặt các phiên bản cũ (nếu có):
    sudo apt-get remove docker docker-engine docker.io containerd runc
  2. Cập nhật chỉ mục gói apt và cài đặt các gói cần thiết để sử dụng repository qua HTTPS:
    sudo apt-get update
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
  3. Thêm khóa GPG chính thức của Docker: Điều này giúp xác minh các gói bạn tải xuống là chính xác từ Docker.
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  4. Thiết lập repository Docker ổn định:
    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
  5. Cập nhật lại chỉ mục gói apt sau khi thêm repository:
    sudo apt-get update
  6. Cài đặt Docker Engine, Docker CLI và Containerd:
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  7. Quản lý Docker như một người dùng không phải root: Mặc định, daemon Docker lắng nghe trên Unix socket thuộc sở hữu của người dùng root. Để chạy các lệnh docker mà không cần sudo, bạn cần thêm người dùng của mình vào nhóm docker. Đây là bước quan trọng để tiện lợi và an toàn hơn trong quá trình sử dụng. Hãy tham khảo lại bài viết Người Dùng, Nhóm và Quyền Hạn trong Linux để hiểu rõ hơn về khái niệm này.
    sudo groupadd docker # Lệnh này có thể báo lỗi nếu nhóm đã tồn tại, không sao cả.
    sudo usermod -aG docker $USER

    Sau khi chạy lệnh này, bạn cần đăng xuất và đăng nhập lại hoặc khởi động lại phiên Terminal để thay đổi có hiệu lực.

  8. Kiểm tra cài đặt:
    docker run hello-world

    Nếu bạn thấy thông báo xác nhận, cài đặt đã thành công. Kiểm tra phiên bản:

    docker --version
    docker compose version

Cài đặt Docker Engine trên CentOS/RHEL/Fedora (sử dụng yum/dnf):

Các bước này tương tự, sử dụng trình quản lý gói yum (CentOS/RHEL 7 trở xuống) hoặc dnf (Fedora, CentOS/RHEL 8 trở lên).

  1. Gỡ cài đặt các phiên bản cũ (nếu có):
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine

    Hoặc với dnf:

    sudo dnf remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
  2. Cài đặt gói yum-utils (cần thiết cho repository ổn định):
    sudo yum install -y yum-utils

    Hoặc với dnf:

    sudo dnf install -y dnf-plugins-core
  3. Thiết lập repository ổn định:
    sudo yum-config-manager \
                --add-repo \
                https://download.docker.com/linux/centos/docker-ce.repo

    Hoặc với dnf:

    sudo dnf config-manager \
                --add-repo \
                https://download.docker.com/linux/centos/docker-ce.repo

    Đối với Fedora, URL repo sẽ khác một chút:

    sudo dnf config-manager \
                --add-repo \
                https://download.docker.com/linux/fedora/docker-ce.repo
  4. Cài đặt Docker Engine, Docker CLI và Containerd:
    sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

    Hoặc với dnf:

    sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

    Nếu được hỏi chấp nhận khóa GPG, gõ y.

  5. Bật và khởi động Docker daemon:
    sudo systemctl start docker
    sudo systemctl enable docker

    Lệnh enable đảm bảo Docker sẽ tự động khởi động khi hệ thống boot.

  6. Quản lý Docker như một người dùng không phải root: Tương tự như trên Debian/Ubuntu, thêm người dùng của bạn vào nhóm docker.
    sudo groupadd docker # Có thể báo lỗi nếu nhóm đã tồn tại.
    sudo usermod -aG docker $USER

    Đăng xuất và đăng nhập lại hoặc khởi động lại phiên Terminal.

  7. Kiểm tra cài đặt:
    docker run hello-world

    Kiểm tra phiên bản:

    docker --version
    docker compose version

Khắc phục sự cố thường gặp trên Linux:

  • Lỗi permission denied khi chạy lệnh docker: Điều này thường xảy ra nếu bạn chưa thêm người dùng của mình vào nhóm docker hoặc chưa đăng xuất/đăng nhập lại sau khi thêm. Chạy lại lệnh sudo usermod -aG docker $USER và sau đó đăng xuất/đăng nhập.
  • Lỗi “Cannot connect to the Docker daemon…”: Đảm bảo dịch vụ Docker (daemon) đang chạy. Sử dụng lệnh sudo systemctl status docker (trên các hệ thống sử dụng systemd) để kiểm tra trạng thái và sudo systemctl start docker để khởi động nếu cần.
  • Không tìm thấy gói: Đảm bảo bạn đã thêm repository chính thức của Docker và cập nhật chỉ mục gói (sudo apt-get update hoặc sudo yum/dnf makecache). Kiểm tra lại URL repository cho đúng với bản phân phối và phiên bản hệ điều hành của bạn.

5. So Sánh Các Phương Pháp Cài Đặt

Dưới đây là bảng tóm tắt sự khác biệt chính giữa các phương pháp cài đặt Docker trên các hệ điều hành:

Hệ điều hành Phương pháp cài đặt Giao diện Sử dụng ảo hóa? Độ phức tạp cài đặt Ưu điểm chính Nhược điểm chính
Windows Docker Desktop GUI (có CLI đi kèm) Có (WSL 2) Dễ dàng (GUI Installer) Giao diện thân thiện, tích hợp tốt, hiệu năng tốt với WSL 2 Yêu cầu phiên bản Windows và cấu hình WSL 2
macOS Docker Desktop GUI (có CLI đi kèm) Có (Máy ảo nhẹ) Dễ dàng (DMG Installer) Giao diện thân thiện, tích hợp hệ thống Chỉ hỗ trợ các phiên bản macOS gần đây
Linux Docker Engine (qua Package Manager) CLI Không (chạy trực tiếp trên OS) Trung bình (lệnh dòng lệnh) Hiệu năng gốc, linh hoạt, phù hợp cho Server và môi trường tự động hóa Chỉ dòng lệnh, các bước cài đặt khác nhau tùy bản phân phối, cần quản lý quyền người dùng

6. Bước Tiếp Theo: Làm Quen Với Lệnh Docker

Sau khi cài đặt Docker thành công, thế giới container đang chờ đón bạn! Bây giờ là lúc để thực hành những gì đã chuẩn bị. Hãy bắt đầu với việc làm quen với các lệnh Docker cơ bản. Bạn sẽ học cách tải về các image (docker pull), chạy container từ image đó (docker run), liệt kê các container đang chạy (docker ps), dừng và xóa container (docker stop, docker rm), và nhiều lệnh khác nữa.

Việc nắm vững các lệnh này là nền tảng để bạn có thể đóng gói, phân phối và chạy ứng dụng của mình trong môi trường container độc lập. Bạn cũng có thể bắt đầu nghĩ đến việc sử dụng Shell Script để tự động hóa các quy trình làm việc với Docker.

Đừng quên rằng Docker là công cụ mạnh mẽ hỗ trợ nhiều khía cạnh của phát triển ứng dụng, từ phát triển web đến việc triển khai các kiến trúc ứng dụng phức tạp sử dụng nhiều ngôn ngữ lập trình khác nhau.

Kết Luận

Cài đặt Docker là cánh cửa đầu tiên để bạn bước vào thế giới của container, nơi việc phát triển, triển khai và quản lý ứng dụng trở nên hiệu quả và nhất quán hơn. Dù bạn sử dụng Windows, macOS hay Linux, quá trình cài đặt đều khả thi với những hướng dẫn chi tiết. Hãy kiên nhẫn thực hiện từng bước, kiểm tra lại sau mỗi giai đoạn và đừng ngần ngại tìm kiếm thông tin nếu gặp sự cố.

Việc làm chủ Docker sẽ mở ra nhiều cơ hội mới trong sự nghiệp của một DevOps Engineer hiện đại. Trong các bài viết tiếp theo của Roadmap Docker, chúng ta sẽ đi sâu hơn vào cách xây dựng Image của riêng bạn, quản lý dữ liệu với Volume, kết nối các container với Network, và nhiều chủ đề nâng cao khác. Hãy cùng tiếp tục hành trình khám phá này!

Chỉ mục