Xem phiên bản trước

Kho apt chính thức của Docker hiện hỗ trợ các phiên bản Ubuntu 64 bit sau: 26.10, 26.04 LTS, 24.04 LTS và 22.04 LTS. Nếu phiên bản của bạn không có trong danh sách, đừng đổi mã phát hành trong phần cấu hình repo bên dưới thành một phiên bản được hỗ trợ để cài cưỡng ép. Không chắc hệ thống của mình đang dùng phiên bản nào, hãy xem trước:

cat /etc/os-release

Bài này chỉ nói về một con đường duy nhất: cài Docker Engine và plugin Compose bằng kho apt chính thức của Docker. Docker Desktop, bản snap và script tiện lợi không nằm trong phạm vi.

Dọn các gói cũ xung đột

Nguồn có sẵn của Ubuntu có các gói như docker.io, docker-compose, podman-docker với tên gần giống hoặc chức năng chồng lấn, cần gỡ bỏ trước khi cài bản chính thức. Lệnh mà tài liệu chính thức đưa ra là:

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

dpkg --get-selections chỉ liệt kê các gói thực sự đã cài trong hệ thống, cut -f1 lấy tên gói đưa cho apt remove. Nếu không cài gói nào thì phần trong ngoặc rỗng, apt remove sẽ báo thiếu tham số, điều này không ảnh hưởng đến các bước sau.

Danh sách có containerd và runc. Nếu máy của bạn còn dịch vụ khác phụ thuộc vào containerd có sẵn của hệ thống, hãy xem reverse dependency trước khi gỡ:

apt-cache rdepends containerd

Thêm kho apt của Docker

Cài dependency trước, rồi đặt khóa GPG chính thức vào:

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Sau đó ghi định nghĩa repo. Phía chính thức hiện dùng định dạng deb822, tệp là /etc/apt/sources.list.d/docker.sources:

sudo tee /etc/apt/sources.list.d/docker.sources <<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

Hai chỗ $(...) được shell triển khai tại thời điểm ghi: Suites lấy mã phát hành của hệ thống hiện tại, Architectures lấy kiến trúc máy, nên cùng một đoạn lệnh dùng được ngay cả trên x86_64 lẫn arm64. Ghi xong thì cập nhật lại index một lần nữa:

sudo apt update

Trong output phải xuất hiện các dòng download.docker.com, không có lỗi chữ ký GPG. Tôi đã chạy các bước này trong container Ubuntu 26.04.1 LTS (arm64): trong docker.sources được tạo ra, Suites là resolute, Architectures là arm64, và apt update kéo index gói của resolute/stable về bình thường.

Cài đặt

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

Năm gói mỗi gói lo một việc: docker-ce là engine, docker-ce-cli cung cấp lệnh docker, containerd.io là runtime bên dưới, docker-buildx-plugin cung cấp docker buildx, docker-compose-plugin cung cấp docker compose. Compose ở dạng plugin, cách dùng là docker compose up có dấu cách, không phải lệnh docker-compose độc lập của bản cũ.

Sau khi cài xong trong cùng container 26.04.1 đó, phiên bản tôi thấy là Docker 29.9.1, Compose v5.6.0, buildx v0.38.0. Đây là số liệu tính đến ngày 18 tháng 10 năm 2026, còn lúc bạn cài thì repo có phiên bản gì thì dùng phiên bản đó.

Kiểm chứng

sudo docker run hello-world

Lệnh này sẽ pull và chạy image hello-world, thấy dòng chữ chào mừng là engine và command line đã thông. Nếu báo không kết nối được Docker daemon, trên máy có systemd dùng systemctl status docker để xem trạng thái dịch vụ.

Chạy docker không cần sudo

Sau khi cài xong, nhóm docker đã tồn tại nhưng chưa có bất kỳ user nào trong nhóm, nên chạy docker trực tiếp sẽ bị từ chối vì quyền, cần sudo. Muốn bỏ sudo, hãy thêm mình vào nhóm này:

sudo groupadd docker
sudo usermod -aG docker $USER

Nếu nhóm đã tồn tại, groupadd sẽ báo lỗi, có thể bỏ qua và tiếp tục thực thi lệnh thứ hai. Thành viên nhóm được xác định lúc đăng nhập, nên phải đăng xuất rồi đăng nhập lại, hoặc thực thi newgrp docker trong terminal hiện tại. Sau đó kiểm chứng mà không thêm sudo:

docker run hello-world

Làm vậy phải trả giá. Tài liệu chính thức của Docker ghi rõ: nhóm docker tương đương với việc cấp cho user đó quyền mức root. Vì vậy chỉ thêm những tài khoản thực sự cần, đừng vì tiện mà thêm tất cả mọi user vào. Muốn gỡ một user nào đó khỏi nhóm, thay tên_người_dùng bằng tên tài khoản tương ứng:

sudo gpasswd -d tên_người_dùng docker

Có hiệu lực sau khi đăng nhập lại.

Tự khởi động cùng hệ thống

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Nâng cấp và gỡ cài đặt

Các gói của Docker do apt quản lý thống nhất, nâng cấp chỉ là sudo apt update cộng với sudo apt upgrade như thường lệ.

Gỡ cài đặt gồm ba bước, tài liệu chính thức viết như sau:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

Bước này không xóa image, container, volume và các tệp cấu hình bạn đã chỉnh sửa. Muốn dọn sạch luôn thì phải xóa thủ công thư mục dữ liệu:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Hai lệnh này sẽ xóa vĩnh viễn toàn bộ image, container và volume trên máy chủ, không có thùng rác. Nếu trong đó có dữ liệu cần giữ lại, hãy backup trước khi thực thi. Cuối cùng xóa repo và khóa:

sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.asc

Các tệp cấu hình bạn đã chỉnh sửa cũng sẽ không được dọn tự động, cần xóa thủ công.