Docker容器数据卷

99 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性; 卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷 将docker容器内的数据保存进宿主机的磁盘中

特点:

  • 数据卷可在容器之间共享或重用数据
  • 卷中的更改可以直接实时失效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

二、宿主vs容器之间映射添加容器卷

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData --name=u1 ubuntu

查看数据卷是否挂载成功:

docker inspect 50e0cfed8acd

在这里插入图片描述

就算容器停止了,宿主机数据卷的修改依然会同步到容器内

三、读写规则映射添加说明

  • 默认读写(即在容器目录后缀:rw)
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData:rw --name=u1 ubuntu
  • 只读:容器内部被限制,只能读取不能写,但若是宿主机写入数据卷,可以同步给容器读取
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
docker run -it --privileged=true -v /tmp/hostData:/tmp/dockerData:ro --name=u1 ubuntu

四、卷的继承和共享

docker run -it --privileged=true --volumes-from 父类  镜像名
docker run -it --privileged=true --volumes-from u1 --name=u2 ubuntu

继承只是继承了数据卷挂载的规则,u1停止与否不影响u2数据读写