Hướng Dẫn Sử Dụng Docker Container Cơ Bản

Trong thời đại DevOps và điện toán đám mây, Docker Container đã trở thành một công nghệ quan trọng giúp triển khai ứng dụng nhanh chóng, gọn nhẹ và ổn định trên mọi môi trường. Vậy Docker Container thực sự là gì và vì sao nó được sử dụng rộng rãi đến vậy?

Docker Container là gì?

Docker Container là một môi trường chạy ứng dụng độc lập, được đóng gói sẵn toàn bộ những gì cần thiết để phần mền hoạt động, bao gồm mã nguồn, thư viện, biến môi trường và tệp cấu hình.

Thay vì đặt ứng dụng trực tiếp lên hệ điều hành ( dễ gây xung đột), Docker cho phép chạy ứng dụng bên trong container – một môi trường thiết lập nhưng vẫn dùng chung hệ điều hành của máy chủ. Nhờ vậy, ứng dụng có thể chạy ổn định trên nhiều hệ thống khác nhau như máy cá nhân, VPS hay nền tảng Cloud.

Hiểu đơn giản, Docker Container giống như một “chiếc hộp” chứa sẵn ưng dụng và môi trường của nó, chỉ cần mang đi là chạy được ngay.

Lợi ích khi sử dụng Docker Container

1. Đảm bảo tính nhất quán giữa các môi trường

Ứng dụng chạy trong Docker trên máy lập trình viên sẽ hoạt động giống hệt khi đưa lên server thật. Điều này giúp giảm đáng kể lỗi do môi trường.

2. Triển khai nhanh và linh hoạt

Chỉ với vài lệnh đơn giản, bạn có thể khởi tạo và chạy toàn bộ hệ thống mà không cần cài đặt thủ công từng thành phần.

3. Tiết kiệm tài nguyên

So với máy ảo, container nhẹ hơn rất nhiều vì không cần chạy hệ điều hành riêng. Điều này giúp tối ưu RAM, CPU và dung lượng lưu trữ.

4. Dễ mở rộng hệ thống

Khi lượng truy cập tăng, bạn có thể tạo thêm nhiều container để chia tải mà không cần thay đổi cấu trúc hệ thống phức tạp.

5. Dễ quản lý và di chuyển

Container có thể sao chép, di chuyển hoặc triển khai lại ở server khác một cách nhanh chóng và nhất quán.

Cách hoạt động của Docker Container

Để hiểu Docker Container hoạt động ra sao, bạn chỉ cần nắm 3 khái niệm cốt lõi: Docker Engine, ImageContainer.

1. Docker Engine – “Bộ máy vận hành”

Docker Engine là phần mềm cốt lỗi được cài trên máy chủ hoặc máy cá nhân. Nó chịu trách nhiệm:

  • Tải và quản lý Docker Image
  • Tạo, chạy, dừng và xóa Container
  • Quản lý mạng, lưu trữ và tai nguyên cho Container

Có thể xem Docker Engine như “người điều phối” toàn bộ hệ thông container.

2. Docker Image – “Bản mẫu ứng dụng”

Docker Image là một gói chỉ đọc (read-only) chưa:

  • Hệ điều hành tối giản
  • Thư viện và phụ thuộc
  • mã nguồn ứng dụng
  • Cấu hình cần thiết

Image giống như một bản thiết kế. Từ một image, bạn có thể tạo nhiều container khác nhau.

3. Docker Container – “Ứng dụng đang chạy”

Container là một phiên bản hoạt động của một image. Khi Docker khởi chạy container:

  • Nó tạo một lớp ghi (write layer) phía trên image
  • Ứng dụng bên trong bắt đầu chạy như một tiến trình bình thường
  • Container được cách ly với hệ thống và các container khác

Mỗi container có:

  • Hệ thống file riêng
  • Địa chỉ mạng riêng
  • Tài nguyên CPU/RAM được cấp phát riêng

Nhưng vẫn dùng chung kernel của hệ điều hành máy chủ, giúp container nhẹ và khởi động nhanh.

4. Cơ chế cách ly của Container

Docker sử dụng các tính năng của Linux như:

  • Namespace -> tách biệt tiến trình, mạng, người dùng
  • Cgroups -> Giới hạn tài nguyên CPU, RAM
  • Union File System -> quản lý các lớp dữ liệu của image và conatiner

Nhờ đó, container hoạt động độc lập mà không cần hệ điều hành riêng như máy ảo.

5. Vòng đời của một Container

Một container thường trải qua các trạng thái:

Tạo -> chạy -> Tạm dừng/Dừng -> khởi động lại -> Xóa

Khi container bị xóa, phần mền bên trong sẽ bị mất, trừ khi đã gắn volume để lưu trữ bên ngoài

So sánh Docker Image và Docker Container

Tiêu Chí Container Image Docker Container
Khái niệm Thuật ngữ chung chỉ dùng để tạo container Một loại container image được Docker sử dụng
Phạm vi sử dụng Dùng cho nhiều nền tảng container

(Docker, Kubernetes, Podman, CRI-O…)

Chủ yếu hệ sinh thái Docker
Công nghệ liên quan Chuẩn OCI (Open Container Initiative) Docker tuân theo OCI
Công cụ build Buildah, Kaniko, Podman, Docker… Docker CLI / Docker Engine
Định dạng OCI Image Format Tương thích OCI, trước đây có định dạng riêng của Docker
Lưu trữ Container Registry (Harbor, Quay, GHCR, Docker Hub) Docker Hub hoặc Docker Registry
Mực độ phụ thuộc Docker Không bắt buộc Gắn liền với Docker
Khả năng tương thích Chạy được nhiều Container runtime Chạy tốt trên Docker Engine nhưng vẫn dùng được môi trường khác nhờ OCI
Mục tiêu thiết kế Chuẩn hóa image cho hệ sinh thái container nói chung Phục vụ hệ sinh thái Docker
Ví dụ Image dùng trong Kubernetes cluster Image kéo từ Docker Hub để chạy bằng lệnh docker rund

Các bước khởi tạo và vận hành Docker Container

Tạo Docker Container

Ví dụ:

vNode Tutorial
docker run -d -p 8080:80 --name my-contanier nginx

Lệnh này dùng để khởi tạo và chạy một container Nginx bằng Docker. Trong đó:

  • docker run: Dùng để tạo và chạy một container mới từ image
  • -d (detached mode): Chạy container ở chế để nền (Nếu không có -d -> container chạy chiếm luôn màn hình termial.
  • p 8080:80: Ánh xạ port (port mapping)
  • 80: port bên trong container (Nginx chạy ở port 80)
  • 8080: port bên ngoài máy host (VPS / PC)
  • –name my-contanier: Đặt tên miền container là webserver (Nếu không đặt tên Docker tự sinh tên ngẫu nhiên)
  • nginx: Tên image dùng để tạo container (Docker tự tải từ Docker Hub sau đó tạo container và chạy Nginx)

Kiểm tra danh sách các Docker Container đang chạy trên hệ thống

Lệnh kiểm tra các container đang chạy

vNode Tutorial
docker ps

Lệnh xem tất cả container (Kể cả đã dừng)

vNode Tutorial
docker ps -a 

Các lệnh quản lý Docker Container

Lệnh này được sử dụng để dừng Docker Container bằng cách nhập tên của container cần dừng

vNode Tutorial
docker stop my-contanier

Khởi động lại Docker Container bạn đã chạy dừng

vNode Tutorial
docker start my-contanier

Chạy lệnh dưới đây để xóa Docker Container đã dừng

vNode Tutorial
docker rm my-contanier

Chạy lệnh dưới đây để xóa Docker Container kể cả khi container đang chạy

vNode Tutorial
docker rm -f my-contanier

Xem logs của container

xem logs:

vNode Tutorial
docker logs my-contanier

Xem log realtime (Ngay tại thời điểm đó):

vNode Tutorial
docker logs -f my-contanier

Thực thi lệnh trang container

Dùng để vào shell bên trong container và thao tác trực tiếp:

  • Xem file
  • Chỉnh cấu hình
  • Test lệnh
vNode Tutorial
docker exec -it my-contanier bash

Trong đó:

exec: chạy lệnh trong container

-it: chế độ tương tác (gõ lệnh trực tiếp)

bash: shell(nếu không có bash thì dùng sh)

Thoát khỏi container:

vNode Tutorial
exit

Theo dõi mức tiêu thụ tài nguyên container

Để kiểm soát lượng CPU, bộ nhớ và I/O mà các container đang sử dụng

vNode Tutorial
docker stats

Lệnh này hiện thị thông số sử dụng tài nguyên theo thời gian thực cho từng container đang hoạt động

Thiết lập và quản lý Docker Network

Docker Network giúp các container liên kết và trao đổi dữ liệu với nhau trong cùng môi trường.

Khởi tạo một network mới:

vNode Tutorial
docker network create my-network

Gán container vào network:

vNode Tutorial
docker network connect my-network my-container

Xem danh sách các network hiện có:

vNode Tutorial
docker network ls

Xem cấu trúc và thông tin chi tiết của network:

vNode Tutorial
docker network inspect my-network

Quản lý dữ liệu với Docker Volumes

Docker Volumes được sử dụng để lưu giữ dữ liệu lâu dài, đảm bảo dữ liệu không bị mất khi container bị xóa hoặc tạo lại.

Tạo Voluems mới:

vNode Tutorial
docker volume create my-volume

Gắn volume vào container khi khởi chạy:

vNode Tutorial
docker run -v my-volume:/data my-image

Hiện thị volume đang tồn tại:

vNode Tutorial
docker volume ls 

Xem thông tin chi tiể của volume:

vNode Tutorial
docker volume inspect my-volume

Dọn dẹp các volume không còn sử dụng:

vNode Tutorial
docker volume prune

Kết luận

Docker Container mang lại một cách tiếp cận hiện đại trong việc phát triển và triển khai phần mềm, giúp đóng gói ứng dụng gọn nhẹ, nhất quán và dễ dàng vận hành trên nhiều môi trường khác nhau. Việc nắm vững cách tạo, cấu hình và quản lý Docker Container không chỉ giúp tối ưu tài nguyên hệ thống mà còn giảm thiểu rủi ro lỗi trong quá trình triển khai.

Trong bối cảnh các hệ thống ngày càng phức tạp, Docker trở thành công cụ quan trọng giúp đơn giản hóa quy trình vận hành, tăng tính linh hoạt và nâng cao hiệu quả quản trị. Dù bạn là lập trình viên hay quản trị hệ thống, việc hiểu và sử dụng Docker Container đúng cách sẽ là nền tảng vững chắc cho các mô hình triển khai hiện đại như DevOps và Cloud-native.