docker中数据卷的类型和三种绑定方式
数据卷的类型和挂载方式
挂载方式 有三种类型:bind(目录挂载)、volume(命名卷/匿名卷挂载)、tmpfs ,可以通过 -v 或者 --mount 参数挂载
① -v(--volume)主要用于简单挂载场景,适合快速挂载需求,例如开发调试时共享代码或配置文件。-v 支持 bind 和 volume 两种挂载类型,若宿主机目录不存在会自动创建。
# 挂载类型为 bind
docker run -d --name <容器名> -v <宿主机目录>:<容器目录>
# 挂载类型为 volume
docker run -d --name <容器名> -v <数据卷名>:<容器目录>
② --mount 支持更复杂的挂载需求(例如使用 tmpfs 临时存储),需要指定挂载类型或驱动选项。--mount 包含 bind、volume(默认) 和 tmpfs 三种挂载类型,通过 type 参数来改变挂载方式。若宿主机目录不存在,默认会报错。
docker run -d --name <容器名> --mount type=bind,source=<宿主机目录>,destination=<容器目录>
docker run -d --name <容器名> --mount type=volume,source=<数据卷名>,destination=<容器目录>
docker run -d --name <容器名> --mount type=tmpfs,destination=<容器目录>
如果是 volume 绑定方式,默认存储在 /var/lib/docker/volumes/{卷名} 路径下,这片区域是 docker 管理的,下面这个图不错,我从别处偷的

注意:① 容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的 ② 创建容器的过程中,数据卷如果不存在,则会自动创建。
tmpfs 挂载只存储在宿主机系统的内存中,从不写入宿主机系统的文件系统。它不会保存在磁盘上,无论是在 Docker 主机上还是在容器内。
tmpfs mount 可以在容器的生命周期内用于存储非持久状态或敏感信息,由于使用较少,回头再补充相关文档。
匿名数据卷
启动一个 mysql 容器但不指定数据卷
zhangboming@zhangbomingdeMacBook-Pro lib % docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36
6697fe7dec8719ff49fe851128e84f41f3d28ebe4c64d0aba145c3524c159d57
查看启动日志 docker logs 6697fe7dec8719ff49fe851128e84f41f3d28ebe4c64d0aba145c3524c159d57,发现 mysql 容器启动成功
查看容器详情 docker inspect 6697fe7dec87
...
"Mounts": [
{
"Type": "volume",
"Name": "b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d", # 发现这里自动创建了一个数据卷,这就是匿名数据卷
"Source": "/var/lib/docker/volumes/b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
...
匿名数据卷同样受到 docker 统一管理
zhangboming@zhangbomingdeMacBook-Pro lib % docker volume ls
DRIVER VOLUME NAME
local b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d
zhangboming@zhangbomingdeMacBook-Pro lib % docker volume inspect b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d
[
{
"CreatedAt": "2025-09-10T07:28:48Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d/_data",
"Name": "b0a415b346b820e4a69ce83573b83545162220317e76c72c7a338c4e6fbe5c2d",
"Options": null,
"Scope": "local"
}
]

浙公网安备 33010602011771号