- vừa được xem lúc

Docker Bind Mounts vs Volumes: Sự khác biệt là gì?

0 0 1

Người đăng: Kubernetes

Theo Viblo Asia

Hiểu rõ sự khác biệt chính giữa Bind Mounts và Volumes trong Docker, thời điểm nên sử dụng từng loại, và cách chúng hoạt động phía sau hậu trường.

Hai phương pháp chính để chia sẻ và lưu trữ dữ liệu với container:

  • Bind Mounts
  • Volumes

Mặc dù có vẻ giống nhau, nhưng hai phương pháp này phục vụ cho những mục đích khác nhau và hoạt động khác biệt về bản chất.

Volume là gì?

Volume là cơ chế lưu trữ do Docker quản lý. Docker xử lý vị trí dữ liệu và vòng đời của dữ liệu, vì thế volume là lựa chọn ưu tiên để lưu trữ dữ liệu lâu dài, đặc biệt trong môi trường production.

Đặc điểm nổi bật:

  • Được quản lý tại đường dẫn /var/lib/docker/volumes/
  • Tách biệt lưu trữ khỏi logic của container
  • Phù hợp để lưu trữ lâu dài
  • Hỗ trợ driver tùy chỉnh (ví dụ: NFS, cloud)
  • An toàn và dễ di chuyển

Tạo và sử dụng Volume:

# Create a volume
docker volume create mydata # Run a container using the volume
docker run -d --name myapp -v mydata:/usr/share/app/data nginx

Bind Mount là gì?

Bind Mount cho phép bạn mount một thư mục hoặc tập tin cụ thể từ hệ thống host vào container. Bạn kiểm soát đường dẫn nguồn.

Đặc điểm nổi bật:

  • Sử dụng đường dẫn tuyệt đối từ hệ thống host
  • Lý tưởng cho phát triển và gỡ lỗi cục bộ
  • Phản hồi thay đổi từ host ngay lập tức trong container
  • Linh hoạt nhưng bảo mật thấp hơn

Tạo và sử dụng Bind Mount:

docker run -d --name devapp \ -v /Users/zaheet/projects/mycode:/usr/share/app \ nginx

Các thay đổi trong thư mục /Users/zaheet/projects/mycode sẽ được phản ánh ngay trong container.

So sánh Bind Mount và Volume

image.png

Khi nào nên sử dụng cái nào?

👉 Sử dụng Bind Mounts khi:

  • Đang trong giai đoạn phát triển
  • Cần phản hồi tức thì từ host
  • Muốn kiểm soát hoàn toàn vị trí lưu dữ liệu

👉 Sử dụng Volumes khi:

  • Cần lưu trữ dữ liệu ứng dụng
  • Chạy trong môi trường production
  • Muốn dễ dàng sao lưu và di chuyển

Named vs Anonymous Volumes

# Named Volume – Easier to manage and reuse
docker run -v myvolume:/data myimage # Anonymous Volume – Docker assigns a random name
docker run -v /data myimage

Dọn dẹp Volume

# List all volumes
docker volume ls # Remove a specific volume
docker volume rm mydata # Prune unused volumes
docker volume prune

Tổng kết

Hiểu rõ sự khác biệt giữa Volumes và Bind Mounts sẽ giúp cải thiện đáng kể quy trình phát triển và triển khai ứng dụng với Docker.

🧠 Dùng Volume khi làm việc với các workload production hoặc cơ sở dữ liệu.

💻 Dùng Bind Mount khi đang phát triển local và cần cập nhật trực tiếp.

Bạn đã sử dụng Volume hay Bind Mount chưa? Hãy để lại bình luận chia sẻ trải nghiệm của bạn nhé!

Cảm ơn các bạn đã theo dõi!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

1 1 555

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 106

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 109

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 86

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 73

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 135