Khi sử dụng Docker, Volume là một khái niệm quan trọng giúp chia sẻ và lưu trữ dữ liệu giữa Docker container và hệ thống máy chủ (host). Volume có ưu điểm lớn là giúp dữ liệu tồn tại ngay cả khi container bị xóa, và giúp quản lý việc lưu trữ dễ dàng hơn. Trong bài viết này, chúng ta sẽ tìm hiểu về vị trí lưu trữ của Docker Volume trong hệ thống.

Khái niệm về Docker Volume

Volume là một phương thức lưu trữ dữ liệu bên ngoài container. Khi bạn tạo Volume trong Docker, hệ thống sẽ tạo một thư mục trên máy chủ và liên kết thư mục này với một thư mục bên trong container. Điều này cho phép container lưu dữ liệu mà không phụ thuộc vào vòng đời của container.

Docker tự động quản lý việc lưu trữ Volume và cung cấp cách dễ dàng để gắn chúng vào container thông qua lệnh hoặc Docker Compose.

Vị trí lưu trữ của Docker Volume

Mặc định, Docker lưu Volume trên hệ thống tập tin của máy chủ tại một đường dẫn cụ thể. Đường dẫn này thường nằm trong thư mục Docker dữ liệu chính, nơi Docker lưu trữ tất cả các tài nguyên như container, image, và volume.

Đường dẫn mặc định của Docker Volume

Trên các hệ thống Linux, Docker Volume thường được lưu tại thư mục:

/var/lib/docker/volumes/

Mỗi Volume sẽ được gán một ID duy nhất và sẽ được lưu dưới dạng một thư mục riêng biệt trong đường dẫn này. Cấu trúc thường thấy trong thư mục /var/lib/docker/volumes/ là:

/var/lib/docker/volumes/
    ├── volume_name_1/
    │   └── _data/
    ├── volume_name_2/
    │   └── _data/
    └── volume_name_3/
        └── _data/

Trong đó:

  • volume_name_1, volume_name_2 là tên hoặc ID của các Volume mà Docker tạo ra.
  • Thư mục _data là nơi dữ liệu thực tế được lưu trữ.

Truy cập dữ liệu trong Volume

Bạn có thể truy cập trực tiếp vào dữ liệu của Volume từ hệ thống máy chủ bằng cách điều hướng đến thư mục tương ứng trong /var/lib/docker/volumes/volume_name/_data.

Ví dụ, nếu bạn có một Volume tên là my_volume, dữ liệu của Volume này sẽ nằm tại:

/var/lib/docker/volumes/my_volume/_data

Thay đổi vị trí lưu trữ Docker Volume

Nếu bạn muốn thay đổi vị trí mặc định mà Docker lưu trữ Volume, bạn có thể thực hiện bằng cách cấu hình lại tệp Docker daemon (/etc/docker/daemon.json) để chỉ định đường dẫn mới.

Ví dụ, nếu bạn muốn lưu trữ Volume tại thư mục /mnt/docker_data, bạn cần thêm cấu hình sau vào tệp daemon.json:

{
  "data-root": "/mnt/docker_data"
}

Sau đó, bạn cần khởi động lại Docker để áp dụng thay đổi này:

sudo systemctl restart docker

Kiểm tra thông tin về Volume

Để kiểm tra các thông tin về Docker Volume như tên, đường dẫn, hoặc trạng thái, bạn có thể sử dụng lệnh:

docker volume inspect <volume_name>

Ví dụ:

docker volume inspect my_volume

Lệnh này sẽ hiển thị thông tin chi tiết về Volume, bao gồm cả đường dẫn nơi Volume được lưu trữ:

[    {        "CreatedAt": "2024-10-10T10:10:10Z",        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/my_volume/_data",        "Name": "my_volume",        "Options": {},        "Scope": "local"    }]

Trong đó, Mountpoint là đường dẫn thực tế trên hệ thống nơi dữ liệu của Volume được lưu trữ.

Lưu trữ Volume trên hệ thống Windows và MacOS

Trên hệ thống Windows và MacOS, Docker không chạy trực tiếp trên hệ điều hành, mà thông qua một máy ảo chạy Linux. Vì vậy, vị trí lưu trữ Volume có thể khác so với Linux bản địa. Docker vẫn sử dụng một hệ thống tệp Linux bên trong máy ảo để lưu Volume, và vị trí mặc định trên các hệ thống này có thể tương tự như Linux:

/var/lib/docker/volumes/

Tuy nhiên, bạn cần truy cập vào máy ảo Linux thông qua Docker Desktop để xem các thư mục này.

Kết luận

Docker Volume mặc định được lưu trữ trong thư mục /var/lib/docker/volumes/ trên các hệ thống Linux. Trong thư mục này, mỗi Volume được lưu dưới dạng một thư mục con và dữ liệu thực tế được đặt trong thư mục _data. Bạn có thể thay đổi vị trí lưu trữ của Volume bằng cách cấu hình Docker daemon hoặc kiểm tra thông tin Volume với lệnh docker volume inspect. Volume giúp quản lý và bảo vệ dữ liệu của bạn ngay cả khi container bị xóa, và là một công cụ mạnh mẽ trong việc quản lý dữ liệu trong Docker.