【Docker】存储卷

【简介】

宿主机的某一目录与容器中的某一目录建立的一种绑定关系,这就是**"存储卷"**
它有三个特性
1.它可以绕过联合文件系统, 直接作用于宿主机的目录
2.容器和宿主机的这一绑定关系指向了同一目录, 因此两个目录之间的数据是同步的,宿主机和容器都能读到
3.容器的销毁并不会销毁存储卷中的数据

【存储卷分类】

目前 Docker 提供了三种方式将数据从宿主机挂载到容器中

【 volume: docker 管理卷**】**

默认映射到宿主机的**/var/lib/docker/volumes**目录下,只需要指定容器内挂载路径,容器引擎 daemon 会在宿主机自行创建对应的目录(由docker来管理)

这种方式让用户使用的很省心,但缺陷是用户无法指定宿主机目录,因此可用于临时存储

【 bind mount: 绑定数据卷**】**

宿主机和容器内的绑定路径都需要人工手动指定
这种方式可以精准地控制数据的存储, 因此实际运用中这种存储卷的使用十分广泛

【 tmpfs mount: 临时数据卷**】**

它被绑定与宿主机内存中,一旦容器停止运行, tmpfs mounts就会被移除,数据就会丢失
一般用于高性能的临时数据存储。

【创建卷】

存储卷可以通过命令方式创建,也可以在创建容器的时候通过 -v 和 --mount 指定

【方式一:命令创建】

【创建存储卷】

语法 docker volume create OPTIONS VOLUME

未指定名称, 创建出来的就是 匿名卷

指定名称则创建出来的是命名卷

○ -d, --driver**:**指定驱动,默认是 local
○ --label : 指定元数据

【查看卷详细信息】

语法docker volume inspect OPTIONS VOLUME VOLUME...

○ -f : 指定相应个格式,如json

【列出卷】

语法docker volume ls OPTIONS

○ --format : 指定相应格式,如 json,table
○ --filter,-f: 过滤
○ -q: 仅显示名称

【删除卷(需要对应容器不使用)】

语法 docker volume rm OPTIONS VOLUME VOLUME...

○ -f,--force: 强制删除

【删除所有不使用的本地匿名卷】

语法 docker volume prune OPTIONS
○ --filter: 过滤
○ -f, --force : 不提示是否删除

【方式二:通过 -v 和 --mount 指定】

【-v 参数】

语法 docker run -v name:directory:options......
○ 第一个参数 name :卷名称(如果本地没有, 将自动创建)(如果name指定为宿主机目录, 则会创建绑定数据卷, 而不是docker管理卷)
○ 第二个参数 directory :卷映射到容器内的目录
○ 第三个参数 options :选项,如 ro 表示 readonly

【--mount 参数】

语法 --mount '<key>=<value>,<key>=<value>'
○ type : 类型表示 volume , bind,or tmpfs(表明创建的是三种存储卷中的哪一种)
○ source , src:对于命名卷,这是卷的名称。对于匿名卷,省略此字段。{如果type
指定为bind, 同时src指定为宿主机目录, 则会创建绑定数据卷, 而不是docker管理卷)
○ destination , dst,target :文件或目录挂载在容器中的路径
○ ro,readonly: 只读方式挂载

相关推荐
一个天蝎座 白勺 程序猿3 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS7 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希1238 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾9 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
闲云自留地14 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达14 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落17 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng17 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮18 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹18 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器