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, Image và Container.
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.
