Chuyển đến nội dung chính

Cài đặt Docker trên Ubuntu: Từ thiết lập đến container đầu tiên

Chỉ cần vài lệnh là bạn có thể đi từ một bản cài OS mới tinh đến ứng dụng container hóa đầu tiên. Hãy học cách thực hiện với hướng dẫn thiết lập Docker trên Ubuntu tối ưu này.
· 11 phút đọc

Khám phá cùng AI

Nếu bạn muốn ngừng câu nói "chạy được trên máy tôi," thì container hóa là con đường nên đi.

Nói ngắn gọn, container hóa cho phép bạn đóng gói ứng dụng vào các môi trường nhẹ, tách biệt gọi là container. Các container này bao gồm mọi thứ cần thiết để chạy ứng dụng, như mã và phụ thuộc, nhưng không có thứ thừa thãi. Ứng dụng được container hóa sẽ chạy nhất quán trên các môi trường khác nhau, dù là trên laptop, máy chủ thử nghiệm hay môi trường sản xuất.

Docker vẫn là nền tảng phổ biến để container hóa ứng dụng vào năm 2025. Docker có thể chạy trên mọi hệ điều hành, nhưng giống như đa số công cụ phát triển, hệ thống dựa trên UNIX thường được ưa chuộng hơn.

Trong bài viết này, bạn sẽ học cách cài đặt Docker trên Ubuntu, khởi chạy container đầu tiên, cũng như quản lý và giám sát các container đang chạy.

Thiết lập khá đơn giản nhưng gồm vài bước. Hãy bắt đầu nhé!

Docker có giống Kubernetes không? Đây là tất cả khác biệt mà mọi lập trình viên nên biết.

Chuẩn bị hệ thống Ubuntu

Trước khi cài đặt Docker trên Ubuntu, bạn cần dọn dẹp một vài thứ. Bạn sẽ xử lý tất cả trong phần này.

Trước hết, hãy đảm bảo bạn đang chạy một hệ thống Ubuntu, phiên bản Desktop hoặc Server. Chúng tôi sử dụng Ubuntu Server 24.04:

Chi tiết hệ điều hành

Hình 1 - Chi tiết hệ điều hành

Nếu bạn thấy kết quả tương tự như trong hình trên, mọi thứ đã sẵn sàng.

Kiểm tra yêu cầu hệ thống

Trước khi cài đặt Docker, hãy đảm bảo hệ thống của bạn có đủ tài nguyên để chạy.

Mặc dù Docker không nêu rõ yêu cầu tối thiểu trên trang web (ngoài kiến trúc CPU tương thích), chúng tôi thấy rằng các thông số sau là đủ để chạy chính Docker:

  • Hệ điều hành: Ubuntu Desktop/Server 20.04 trở lên  
  • Kiến trúc CPU: 64-bit (x86_64 hoặc arm64)  
  • Bộ nhớ: 512 MB RAM  
  • Lưu trữ: 5 GB  

Một máy với cấu hình này sẽ cho phép bạn chạy Docker, nhưng không nhiều hơn. Đừng kỳ vọng chạy các container phức tạp hoặc ứng dụng đa container.

Nếu bạn định làm nhiều hơn, hãy hướng tới ít nhất 2 GB RAM, 25 GB lưu trữ, và một CPU hiện đại.

Cập nhật hệ thống Ubuntu

Chúng tôi chạy Docker trên một bản cài đặt Ubuntu Server mới, nên sẽ cung cấp mọi lệnh cần thiết để thiết lập các điều kiện tiên quyết cho Docker.

Đầu tiên, cập nhật danh sách gói và nâng cấp các gói hiện có bằng lệnh sau:

sudo apt update && sudo apt upgrade -y

Quá trình này có thể mất vài phút, nhưng đảm bảo trình quản lý gói sẽ lấy về phiên bản gói và bản vá bảo mật mới nhất.

Đảm bảo điều kiện tiên quyết

Docker cần một vài phụ thuộc để cài đặt và hoạt động đúng. Chạy lệnh này để cài đặt:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

Tóm lại, lệnh trên cho phép tải gói qua HTTPS và cài các công cụ cần để lấy khóa GPG của Docker (chúng ta sẽ đề cập sau).

Vậy là xong — hệ thống của bạn đã sẵn sàng để cài Docker!

Cài đặt Docker trên Ubuntu

Khi đã xử lý xong các điều kiện tiên quyết, việc cài Docker trên Ubuntu gồm bốn bước.

Bước 1: Thêm khóa GPG chính thức của Docker

Khóa GPG (GNU Privacy Guard) của Docker được dùng để ký các gói và kho Docker, đảm bảo tính toàn vẹn và xác thực của image và gói Docker.

Bắt đầu bằng cách chạy lệnh shell phù hợp để tải khóa và lưu phiên bản đã chuyển đổi tương thích với APT trong /usr/share/keyrings.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Bước 2: Thêm kho APT chính thức của Docker

Giờ hãy thêm kho Docker chính thức vào hệ thống của bạn.

Lệnh tiếp theo dùng khóa GPG đã lưu trước đó để xác minh tính xác thực của kho, rồi thêm nó vào nguồn gói của hệ thống:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Sau đó, cập nhật danh sách gói của hệ thống để bao gồm kho mới:

sudo apt update

Bước 3: Cài đặt Docker

Giờ kho đã được cấu hình, bạn sẵn sàng cài Docker trên Ubuntu.

Lệnh cài đặt sẽ cài đặt lõi Docker engine, giao diện dòng lệnh, và runtime để quản lý việc thực thi container:

sudo apt install -y docker-ce docker-ce-cli containerd.io

Khi cài đặt xong, bạn sẽ thấy đầu ra xác nhận cài đặt thành công:

Kết quả cài đặt Docker

Hình 2 - Kết quả cài đặt Docker

Bước 4: Xác minh cài đặt Docker

Docker giờ đã được cài trên hệ thống của bạn.

Để xác minh, in phiên bản Docker ra console. Nếu cài đặt thành công, bạn sẽ thấy số phiên bản hiển thị:

docker --version

Phiên bản Docker đã cài

Hình 3 - Phiên bản Docker đã cài

Tính đến cuối tháng 1/2025, Docker phiên bản 27.5.1 là mới nhất, và chúng tôi đã chạy thành công trên Ubuntu Server.

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

Giờ bạn đã cài Docker và sẵn sàng bắt đầu container hóa ứng dụng của mình.

Nhưng container hóa là gì? Khóa học Containerization and Virtualization concepts của chúng tôi sẽ dạy bạn những điều cơ bản.

Trước khi bắt đầu, chúng tôi khuyến nghị thực hiện thêm ba bước cấu hình để tận dụng tối đa. Phần này dành cho bạn nếu bạn muốn chạy Docker khi hệ thống khởi động hoặc quản lý image và container với tư cách người dùng không phải root.

Bước 1: Khởi động và bật dịch vụ Docker

Dịch vụ Docker hiện đang chạy trên hệ thống của bạn, nhưng sẽ không tự khởi động sau khi reboot.

Để đảm bảo Docker tự khởi động cùng hệ thống, hãy dùng systemctl để bật dịch vụ:

sudo systemctl enable docker

Bạn sẽ thấy đầu ra tương tự như của chúng tôi:

Bật dịch vụ Docker khi khởi động

Hình 4 - Bật dịch vụ Docker khi khởi động

Trong tương lai, nếu bạn thấy thông báo cho biết Docker không chạy (điều này không nên xảy ra), bạn có thể khởi động Docker thủ công bằng lệnh sau:

sudo systemctl start docker

Từ giờ, Docker sẽ luôn chạy miễn là hệ thống của bạn được bật.

Bước 2: Kiểm tra trạng thái Docker

Có một vài lệnh systemctl khác để bạn quản lý dịch vụ Docker.

Ví dụ, lệnh status hiển thị trạng thái của dịch vụ, thường là active, inactive, hoặc failed. Dù còn nhiều trạng thái khác, ba trạng thái này là phổ biến nhất:

sudo systemctl status docker

Trạng thái dịch vụ Docker

Hình 5 - Trạng thái dịch vụ Docker

Nếu dịch vụ Docker của bạn là active, mọi thứ đang hoạt động đúng.

Nếu bạn thấy trạng thái khác cho Docker hoặc dịch vụ nào đó, khởi động lại thường sẽ giải quyết vấn đề:

sudo systemctl restart docker

Sau khi khởi động lại, bạn có thể kiểm tra lại trạng thái để xác nhận dịch vụ đang chạy.

Bước 3: Quản lý Docker với tư cách người dùng không phải root

Mặc định, chạy lệnh Docker cần sudo, khá bất tiện. Điều này nghĩa là bạn phải gõ sudo trước mọi lệnh docker.

May mắn là có cách đơn giản để cho phép người dùng không phải root chạy lệnh Docker — bằng cách thêm người dùng hiện tại vào nhóm docker:

sudo usermod -aG docker $USER

Sau khi chạy lệnh trên, hãy đăng xuất và đăng nhập lại để thay đổi có hiệu lực. Bạn giờ có thể chạy lệnh Docker mà không cần quyền superuser.

Chúng ta sẽ xác minh điều đó ở phần tiếp theo.

Kiểm tra cài đặt Docker

Docker giờ đã được cài và cấu hình. Nó cũng tự chạy khi khởi động và cho phép người dùng của bạn chạy lệnh trực tiếp.

Trong phần này, chúng ta sẽ kết thúc bằng việc chạy hai container — một ví dụ "Hello, World!" đơn giản và một ví dụ chạy script Python.

Bước 1: Chạy container kiểm thử Docker

Docker cung cấp một image kiểm thử đơn giản tên hello-world, chỉ dùng để xác nhận Docker hoạt động đúng.

Chạy lệnh sau để khởi chạy image:

docker run hello-world

Vì image chưa có cục bộ, Docker sẽ tự động tải từ web. Sau vài giây, bạn sẽ thấy đầu ra tương tự như sau:

Ví dụ hello world của Docker

Hình 6 - Ví dụ hello world của Docker

Tóm lại, điều này xác nhận Docker được cài đúng, daemon Docker đang chạy, và hệ thống của bạn có thể kéo image từ Docker Hub.

Bước 2: Chạy container "thực" đầu tiên của bạn

Nếu bạn muốn tự xây image từ đầu, phần này dành cho bạn.

Chúng ta sẽ xây một image đơn giản chạy Python 3.9, khi khởi chạy sẽ thực thi một script Python tùy chỉnh.

Bắt đầu bằng cách tạo thư mục riêng và file app.py sẽ được thực thi:

mkdir python-docker-test && cd python-docker-test
nano app.py

File chỉ chứa một lệnh print() đơn giản, nhưng dĩ nhiên bạn có thể mở rộng để thêm logic phức tạp hơn:

print("Hello from Docker running on Ubuntu!")

Trong cùng thư mục, tạo Dockerfile, tệp hướng dẫn Docker cách xây image theo từng bước:

nano Dockerfile

Ba dòng sau là tất cả những gì bạn cần:

FROM python:3.9-slim
COPY app.py /app.py
CMD ["python", "/app.py"]

Về cơ bản, Docker được chỉ dẫn để lấy image python:3.9-slim từ Docker Hub, sao chép script app.py vào container, rồi chạy script.

Đến giờ, bạn sẽ có các tệp sau trong thư mục làm việc:

Nội dung ứng dụng Python demo

Hình 7 - Nội dung ứng dụng Python demo

Để xây image, chạy lệnh sau:

docker build -t python-hello .

Lệnh trên tạo một image mới trong thư mục hiện tại (.) và gán thẻ python-hello.

Xây Docker image

Hình 8 - Xây Docker image

Để chạy image, dùng lệnh docker run theo sau là thẻ image. Tham số tùy chọn --rm đảm bảo container được xóa sau khi thoát, điều xảy ra ngay khi script Python chạy xong:

docker run --rm python-hello

Chạy script Python trong Docker

Hình 9 - Chạy script Python trong Docker

Và như vậy, bạn đã container hóa thành công ứng dụng Python đầu tiên với Docker chạy trên Ubuntu!

Nếu bạn đang tìm ứng dụng máy học với Docker, bài viết Containerization: Docker and Kubernetes for Machine Learning của DataCamp là tài liệu nên đọc tiếp theo.

Cập nhật và gỡ cài đặt Docker trên Ubuntu

Tự chạy Docker trong môi trường của bạn cho phép kiểm soát hoàn toàn, nhưng cũng đồng nghĩa bạn chịu trách nhiệm theo kịp các bản cập nhật, tính năng mới và bản vá bảo mật.

Phần này giải thích cách thực hiện các tác vụ cơ bản như cập nhật Docker và gỡ bỏ hoàn toàn khỏi hệ thống.

Cập nhật Docker

Cập nhật Docker gồm hai bước chính:

  • Cập nhật danh sách gói để lấy phiên bản Docker mới nhất.
  • Nâng cấp Docker (lõi, CLI, và runtime quản lý container) lên phiên bản mới nhất.

Chạy các lệnh sau trong terminal để cập nhật Docker trên Ubuntu:

sudo apt update
sudo apt upgrade -y docker-ce docker-ce-cli containerd.io
docker --version

Lệnh docker -- version hiển thị phiên bản đang cài. Đây là cách dễ nhất để xác minh Docker đã được cập nhật thành công.

Gỡ cài đặt Docker

Nếu bạn cần loại bỏ Docker khỏi hệ thống, hãy bắt đầu bằng việc gỡ Docker và các gói liên quan, đồng thời xóa mọi tệp và cấu hình còn lại liên quan đến Docker.

Ngoài ra, bạn có thể tùy chọn xóa kho Docker khỏi nguồn APT.

Bốn lệnh sau sẽ gỡ Docker khỏi hệ thống Ubuntu của bạn, nhưng lưu ý chỉ ba lệnh đầu là bắt buộc:

sudo apt remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# Optional
sudo rm /etc/apt/sources.list.d/docker.list

Sau khi chạy các lệnh này, chạy docker --version sẽ trả về lỗi cho biết Docker không còn được cài nữa.

Thực hành tốt khi dùng Docker trên Ubuntu

Quản lý Docker đòi hỏi bảo trì liên tục, vì bạn chịu trách nhiệm xóa tài nguyên không dùng và giám sát hiệu năng.

Trong phần này, chúng ta sẽ đề cập hai tác vụ dọn dẹp thiết yếu bạn nên thực hiện thường xuyên khi chạy Docker trên Ubuntu.

Thường xuyên dọn dẹp tài nguyên Docker

Theo thời gian, các image, container, network và volume Docker không dùng có thể tích tụ, chiếm nhiều dung lượng đĩa.

Dọn dẹp các tài nguyên này được gọi là pruning, dù chi tiết vượt ngoài phạm vi bài viết này.

Chỉ cần nhớ lệnh này — nó sẽ xóa mọi container, image, volume và network không dùng chỉ với một lần chạy:

docker system prune -a -f

Dọn dẹp tài nguyên

Hình 10 - Dọn dẹp tài nguyên

Chúng tôi chỉ thu hồi được 10 kB, nhưng trong môi trường “nghiêm túc” hơn, lệnh này thường giải phóng hàng chục GB dung lượng đĩa.

Bảo mật cài đặt Docker của bạn

Chúng ta đã đề cập hai chủ đề bảo mật quan trọng — giữ Docker luôn cập nhật và quản lý quyền superuser.

Ngoài ra, đây là một vài bước nữa để tăng cường bảo mật Docker trên Ubuntu:

  • Hạn chế đặc quyền của container: Tránh chạy container với cờ --privileged bất cứ khi nào có thể, vì nó vô hiệu hóa nhiều kiểm tra bảo mật tách biệt container khỏi hệ thống host.
  • Chỉ dùng image chính thức và đáng tin cậy: Đừng kéo image từ registry bên thứ ba không được xác minh. Hãy dùng các nguồn tin cậy như Docker Hub và các registry riêng.
  • Bật Docker Content Trust (DCT): Thiết lập biến môi trường này đảm bảo chỉ dùng các image đã được ký và xác minh.

Giám sát hiệu năng Docker

Docker CLI có các công cụ mạnh mẽ giúp bạn giám sát hiệu năng container và xác định vấn đề tiềm ẩn.

Trước khi đi sâu, hãy sửa file app.py để giữ cho nó chạy sau khi container khởi động:

import time

time.sleep(10000)
print("Hello from Docker running on Ubuntu!")

Lý do rất đơn giản — chúng ta cần một container đang chạy để giám sát hiệu năng của nó.

Bắt đầu với lệnh ps. Nói ngắn gọn, nó liệt kê tất cả container đang chạy:

docker ps

Các container Docker đang chạy

Hình 11 - Các container Docker đang chạy

Dù đầu ra không cho biết nhiều, trường CONTAINER ID rất quan trọng cho việc kiểm tra chi tiết tiếp theo.

Giờ hãy xem lệnh stats, hiển thị mức sử dụng tài nguyên theo thời gian thực, gồm CPU, bộ nhớ và mạng cho mọi container đang chạy:

docker stats

Thống kê container

Hình 12 - Thống kê container

Nếu bạn cần bảng phân tích chi tiết về mức sử dụng tài nguyên và cấu hình của một container, hãy dùng lệnh inspect.

Chỉ cần cung cấp ID container:

docker inspect <container_id>

Chi tiết container

Hình 13 - Chi tiết container

Nếu bạn gặp vấn đề với một container Docker, lệnh logs có thể giúp chẩn đoán và tìm nguyên nhân.

Lệnh này cũng cần ID container:

docker logs <container_id>

Terminal hiển thị log container

Hình 14 - Log container

Đôi khi, bạn cần kết nối trực tiếp vào một container đang chạy. Nếu biết ID container, việc này khá đơn giản:

docker exec -it <container_id> bash

Terminal hiển thị log container

Hình 15 - Log container

Lệnh trước sẽ mở một shell bên trong container Docker được chỉ định, cho phép bạn truy cập hoặc chỉnh sửa tệp trực tiếp.

Tổng kết Docker trên Ubuntu

Hôm nay, bạn đã học cách cài đặt, cấu hình và quản lý Docker trên Ubuntu. 

Nếu bạn đã làm theo mọi bước, bạn sẽ có Docker chạy trên hệ thống, tự khởi động khi boot và không cần quyền superuser để quản lý container. Bạn cũng đã học cách xác minh cài đặt Docker, chạy container kiểm thử và thậm chí xây ứng dụng Python container hóa tùy chỉnh đầu tiên.

Có nhiều nội dung, nhưng đó mới chỉ là khởi đầu. Còn rất nhiều điều về câu chuyện container hóa này, và chúng tôi khuyến nghị mạnh mẽ bạn xem các tài nguyên chính thức để thành thạo Docker:

FAQs

Docker dùng để làm gì?

Docker được dùng để tự động hóa việc triển khai ứng dụng vào các container nhẹ, đóng gói ứng dụng và các phụ thuộc vào một môi trường tách biệt có thể tái tạo và độc lập với môi trường host.

Ubuntu có phù hợp cho Docker không?

Ubuntu là lựa chọn tuyệt vời để chạy Docker, cả bản Desktop và Server. Đây là bản phân phối Linux phổ biến và ổn định, được các nhà phát triển yêu thích. Dù vậy, bạn cũng có thể chạy Docker trên các bản phân phối Linux khác.

Vì sao tôi nên dùng Docker?

Docker mang lại lợi ích về môi trường nhất quán cho phát triển/kiểm thử/sản xuất, triển khai ứng dụng nhanh hơn và mở rộng dễ dàng, đồng thời giúp ứng dụng dễ di chuyển giữa các môi trường và hệ thống khác nhau.

Sự khác nhau giữa Docker và máy ảo là gì?

Container Docker dùng chung kernel và tài nguyên của hệ điều hành host, khiến chúng nhẹ và nhanh hơn máy ảo. Máy ảo chạy hệ điều hành riêng và cần nhiều tài nguyên hệ thống hơn.

Làm sao biết Docker hoạt động đúng?

Bạn có thể bắt đầu bằng cách kiểm tra Docker đã cài chưa bằng lệnh docker –version. Ngoài ra, chạy container kiểm thử đơn giản như hello-world sẽ xác minh Docker hoạt động bình thường.

Dario Radečić

Tác giả

Dario Radečić

Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

Chủ đề