持久卷

Docker 进阶

Mike Metzger

Data Engineering Consultant

什么是卷?

  • 卷是在 Docker 中存储数据的选项,独立于容器镜像或主机文件系统
  • 通过命令行(或 API)管理
  • 可在多个容器间共享
  • 性能高于文件共享/绑定挂载
  • 存在直至被删除

卷挂载.png

1 图片改编自 https://docs.docker.com
Docker 进阶

管理卷

  • docker volume
  • docker volume create <volumename>
  • docker volume lsdocker volume list
  • docker volume inspect
    • 提供卷的各种元数据,包括 Name、Mountpoint、Options 等
  • docker volume rm
Docker 进阶

创建卷示例

bash> docker volume create sqldata
sqldata
bash> docker volume ls
DRIVER    VOLUME NAME
local     2f2b7f710551e004dcdd9edf4cad31c37826b428de12f1c04ca02305d216ab00
local     14da7ff0c6eb29f644e6f9f9d59bbcf56b3699c04881dd7cbcaa9ecd6bef239c
local     150aa3c5c7aee30ffd1ec7ecf39f03989bf561536a9413ebed96ffbaa537d103
local     sqldata
...
Docker 进阶

卷检查示例

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 进阶

挂载卷

  • 使用 -v 命令
    • docker run -v <volumename>:<destination path>:<options>
    • 卷名为已有卷的名称
    • 目标路径为卷挂载位置(如 /data)
    • 选项为可选的逗号分隔值,如 ro 表示只读
  • 也可使用 --mount,与绑定挂载相同
$ docker run -v sqldata:/data postgres
Docker 进阶

驱动程序

  • Docker 卷的存储方式
  • 可包含:
    • 本地文件系统(默认)
    • NFS(类 Unix 文件共享)
    • SMB / CIFS(Windows 文件共享)
Docker 进阶

让我们来练习!

Docker 进阶

Preparing Video For Download...