local 卷驱动做什么
local 卷驱动用 --opt type/device/o 三个选项把宿主目录或其他文件系统包装成 Docker 卷。最常见的组合是 type=none、o=bind、device=/srv/appdata,效果是把卷落在指定宿主路径上,而不必迁移整个 Docker 数据目录。
基本信息
| 语法 | docker volume create --driver local --opt type=… --opt device=… --opt o=… |
|---|---|
| 典型组合 | type=none + o=bind + device=/srv/appdata |
| 参数语义 | type/device/o 直接对应 mount 命令的参数 |
| 适用平台 | Linux 宿主上最常用 |
| 核对 | docker volume inspect <卷> 查看 Options |
典型使用场景
- 把部分卷单独放到大容量数据盘,而不迁移整个 Docker 数据目录
- 挂载宿主上已存在的目录,并让它在卷列表里可管理
- 包装特定文件系统(例如内存文件系统)作为卷后端
- 给要求固定宿主路径的遗留应用提供卷接口
- 按业务把卷分散在多块磁盘上,分摊 IO 压力
创建与验证
创建与验证
docker volume create --driver local \
--opt type=none \
--opt o=bind \
--opt device=/srv/appdata \
local-bind
docker volume inspect local-bind --format '{{json .Options}}' # 核对选项
docker run --rm -v local-bind:/data alpine sh -c 'echo ok > /data/probe' # 验证挂载与写入三个选项的含义
| 选项 | 含义 | 示例值 |
|---|---|---|
| type | 文件系统类型 | none 表示直接绑定已有路径 |
| o | 挂载参数 | bind 表示绑定挂载 |
| device | 设备或宿主路径 | /srv/appdata |
| Options | 创建后可在 inspect 中复核 | 改选项需重建卷 |
type/device/o 直接对应 mount 的参数语义,配置前先在同一台宿主上用挂载命令把方式验证一遍,再写进卷创建命令。
选项写错时卷能创建成功但容器挂载失败,创建后立刻用临时容器验证挂载与写入,不要等业务启动才发现。
这种方式挂载的宿主目录不受 Docker 卷生命周期管理,docker volume rm 不会清理其中数据,清理要人工确认。
把宿主系统目录(如 /etc、/usr 的子目录)包成卷挂进容器会显著扩大影响面,授权范围要在评审里说明。
需要跨宿主共享的目录不要用这种本地绑定方式包装,应改用支持共享的存储后端,否则同一份编排在多台机器上各自挂到本地目录,数据并不一致。