Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Xóa một container là dữ liệu bên trong biến mất. Hai container muốn nói chuyện với nhau thì cần mạng đúng cách. Volume và network là hai khái niệm giải quyết đúng hai vấn đề này, và hiểu chúng giúp bạn tránh nhiều sự cố đáng tiếc.
Mỗi container có một lớp ghi (writable layer) riêng, gắn với vòng đời của nó. Khi container bị xóa, lớp này đi theo. Với ứng dụng không lưu trạng thái thì không sao, nhưng với database hay thư mục tải lên của người dùng thì đây là thảm họa.
| Loại | Dữ liệu nằm ở đâu | Hay dùng khi |
|---|---|---|
| Volume | Docker quản lý | Dữ liệu database, dữ liệu cần bền |
| Bind mount | Thư mục cụ thể trên máy chủ | Phát triển, sửa code thấy ngay |
| tmpfs | Bộ nhớ RAM | Dữ liệu tạm, nhạy cảm |
docker volume create pgdata
docker run -d --name db -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data postgres:16
docker volume ls
docker volume inspect pgdata
docker rm -f db
docker run -d --name db2 -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data postgres:16Sau khi xóa container db, tạo container db2 gắn lại volume pgdata thì dữ liệu cũ vẫn còn. Đó là sức mạnh của volume: vòng đời của dữ liệu tách khỏi vòng đời container.
docker run -d -p 3000:3000 -v "$(pwd)":/app -w /app node:20-alpine node server.jsThư mục hiện tại của bạn được gắn vào /app. Sửa file bên ngoài là container thấy ngay. Hãy cẩn thận về quyền truy cập file và đừng dùng bind mount tùy tiện ở production, vì nó phụ thuộc cấu trúc thư mục của máy chủ.
Docker có vài kiểu mạng. Thường gặp nhất:
Điều quan trọng: với mạng bridge do bạn tự tạo, các container gọi nhau bằng tên thay vì địa chỉ IP, vì Docker có DNS nội bộ.
docker network create appnet
docker run -d --name db --network appnet -e POSTGRES_PASSWORD=secret postgres:16
docker run -d --name api --network appnet -p 3000:3000 my-api:1.0Bên trong api, bạn kết nối tới database bằng máy chủ db và cổng 5432. Chú ý rằng cổng 5432 không cần ánh xạ ra ngoài; chỉ những thứ cần truy cập từ bên ngoài (như api) mới cần -p.
Lệnh docker system prune dọn container dừng, mạng không dùng và image treo. Thêm --volumes sẽ xóa cả volume không còn container nào dùng, nên hãy đọc kỹ danh sách mà Docker hỏi xác nhận trước khi đồng ý.
Hãy nhớ nguyên tắc: dữ liệu cần bền thì để ở volume, các container cùng ứng dụng thì cho vào chung một mạng tự tạo và gọi nhau bằng tên. Nắm hai điều này, bạn đã tránh được phần lớn rắc rối khi vận hành Docker.
Nếu bạn muốn luyện thêm bằng các bài thực hành triển khai thật, hãy xem danh sách khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment