Volume persistent

Docker nâng cao

Mike Metzger

Data Engineering Consultant

Volume là gì?

  • Volume là cách lưu dữ liệu trong Docker, tách khỏi image container hệ thống tệp của host
  • Quản lý qua dòng lệnh (hoặc API)
  • Có thể chia sẻ cho nhiều container
  • Hiệu năng cao hơn file share / bind mount
  • Tồn tại cho đến khi xóa

mount volume.png

1 Hình ảnh chỉnh sửa từ https://docs.docker.com
Docker nâng cao

Quản lý volume

  • docker volume
  • docker volume create <volumename>
  • docker volume ls hoặc docker volume list
  • docker volume inspect
    • Cung cấp metadata về volume: Name, Mountpoint, Options, v.v.
  • docker volume rm
Docker nâng cao

Ví dụ tạo volume

bash> docker volume create sqldata
sqldata
bash> docker volume ls
DRIVER    VOLUME NAME
local     2f2b7f710551e004dcdd9edf4cad31c37826b428de12f1c04ca02305d216ab00
local     14da7ff0c6eb29f644e6f9f9d59bbcf56b3699c04881dd7cbcaa9ecd6bef239c
local     150aa3c5c7aee30ffd1ec7ecf39f03989bf561536a9413ebed96ffbaa537d103
local     sqldata
...
Docker nâng cao

Ví dụ volume inspect

bash> volume inspect sqldata

[ { "CreatedAt": "2024-01-27T04:27:51Z", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/sqldata/_data", "Name": "sqldata", "Options": null, "Scope": "local" } ]
Docker nâng cao

Gắn volume

  • Dùng lệnh -v
    • docker run -v <volumename>:<destination path>:<options>
    • Tên volume là tên volume đã có
    • Đường dẫn đích là nơi mount volume (ví dụ /data)
    • Tùy chọn là danh sách giá trị, cách nhau bởi dấu phẩy, như ro (chỉ đọc)
  • --mount giống như bind-mounts
$ docker run -v sqldata:/data postgres
Docker nâng cao

Driver

  • Cách lưu trữ Docker volume
  • Có thể gồm:
    • Hệ thống tệp cục bộ (mặc định)
    • NFS (chia sẻ tệp trên Unix)
    • SMB / CIFS (chia sẻ tệp trên Windows)
Docker nâng cao

Ayo berlatih!

Docker nâng cao

Preparing Video For Download...