主题
Docker 数据卷(Volume)
持久化容器数据,避免容器删除后数据丢失。
两种常见挂载
| 方式 | Compose 写法 | 特点 |
|---|---|---|
| named volume | mydata:/var/lib/mysql | Docker 管理,适合数据库等持久数据 |
| bind mount | ./conf:/etc/mysql/conf.d:ro | 直接挂宿主机目录,适合配置、源码热更新 |
Docker Compose
yaml
services:
mysql:
image: mysql:8.4
volumes:
- mydata:/var/lib/mysql
- ./conf:/etc/mysql/conf.d:ro
volumes:
mydata:- 格式为
source:target[:access_mode]。 source:命名卷名称,或宿主机文件、目录路径。target:容器内的挂载路径。ro:只读挂载;未指定时默认为可读写。- named volume 需要在顶层
volumes中声明。mydata:是命名卷声明,不是路径映射,配置为空时使用 Docker 默认设置。 - bind mount 不需要在顶层
volumes中声明。
volume 命令
bash
docker volume ls
docker volume inspect mydata
docker volume rm mydata
docker volume prune -fprune 只删未被容器使用的卷,删前先确认。
