docker中数据卷的类型和三种绑定方式

数据卷的类型和挂载方式

挂载方式 有三种类型:bind(目录挂载)、volume(命名卷/匿名卷挂载)、tmpfs ,可以通过 -v 或者 --mount 参数挂载

① -v‌(--volume)主要用于简单挂载场景,适合快速挂载需求,例如开发调试时共享代码或配置文件。-v 支持 bindvolume 两种挂载类型,若宿主机目录不存在会自动创建。 ‌

# 挂载类型为 bind
docker run -d --name <容器名> -v <宿主机目录>:<容器目录>

# 挂载类型为 volume
docker run -d --name <容器名> -v <数据卷名>:<容器目录>

‌② --mount‌ 支持更复杂的挂载需求(例如使用 tmpfs 临时存储),需要指定挂载类型或驱动选项。--mount 包含 bindvolume(默认) 和 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"
    }
]
posted @ 2025-08-19 15:22  鹿鹿脖子长  阅读(33)  评论(0)    收藏  举报