赞
踩
Docker容器数据卷是一种特殊类型的目录,可以在容器和主机之间共享数据。当容器结束时,数据卷不会被删除,因此可以在其他容器中使用。数据卷可以被其他容器连接和共享,这使得容器之间的数据共享和持久保存变得更加容易。
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
一句话:有点类似我们Redis里面的rdb和aof文件,将docker容器内的数据保存进宿主机的磁盘中。
将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的
Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在docker中我们使用容器数据卷。
公式
docker run -it -v /宿主机目录:/容器内目录 ubuntu /bin/bash
启动镜像
docker run -it --name u-ubuntu --privileged=true -v /tmp/hostData:/tmp/dockerData ubuntu /bin/bash
ubuntu容器中/tmp/dockerDat中的数据和主机/tmp/hostData中的数据会进行同步
在/tmp/dockerDa创建dockerin.txt文件
查看主机/tmp/hostData是否存在该文件
在**/tmp/hostData存在dockerin.txt**
在主机/tmp/hostData创建hostin.txt文件
查看容器中/tmp/dockerDa是否存在hostin.txt文件
实现了容器和宿主机之间的数据同步
docker inspect 容器ID
docker inspect c6508161a32a
其中Mounts中显示绑定信息
docker容器中修改dockerin.txt
查看主机中dockerin.txt
同步成功
主机修改hostin.txt文件
查看docket中的hostin.txt文件
同步成功
停止docker容器
主机修改内容
进入正在运行的容器
同步成功
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
没有:rw的情况下,默认就是rw读写权限
容器实例内部被限制,只能读取不能写
docker run -it --name u-ubuntu --privileged=true -v /tmp/hostData:/tmp/dockerData:ro ubuntu /bin/bash
/容器目录:ro 镜像名 就能完成功能,此时容器自己只能读取不能写
ro = read only
此时如果宿主机写入内容,可以同步给容器内,容器可以读取到。但是无法写入内容。
启动docker容器,只有读权限
删除之前启动的docker容器
重新创建并启动
docker run -it --privileged=true -v /tmp/host:/tmp/docker --name u1 ubuntu /bin/bash
容器创建a.txt
主机同步成功
主机创建b.txt
容器同步成功
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
容器2创建c.txt
主机同步成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。