出现背景:我们在运行的容器中所产生的数据都生成在容器中,如果容器后期被我们删除,那么在容器中的文件数据都将彻底丢失。为了获得容器中的数据,只能通过 docker cp 命令将容器中的目录文件复制到宿主机上,或者通过将容器进行commit操作打包成镜像,通过使用镜像创建容器后获得之前的数据。这种都是不很好的处理方式,所以数据容器卷相应而生。
容器数据卷是容器在运行过程中持久化数据的一种方式,卷为目录或者文件。数据卷独立与容器的生命周期,当容器被删除时数据卷仍然存在。不会因为容器的删除而宿主机的卷存放文件被删除。
1,使用命令直接添加数据卷
语法:docker run -it -v 宿主机目录路径:容器目录路径 --privileged=true 镜像id /bin/bash
eg:docker run -it -v /root/dataDir:/root/dataDir --privileged=true 0d120b6ccaa8 /bin/bash
--privileged=true 主要解决在宿主机中添加文件后,进入容器卷配置对应目录下看下文件时权限不足问题。
数据持久化概念,命令查看是否挂载成功:docker inspect 容器ID
测试方式:我们在容器的目录中创建目录或添加文件后,在宿主机中对应目录查看文件和目录是否存在。然后在宿主机目录中添加文件目录,在进入容器对应目录中查看是否同步。
容器数据表中的容器尺寸?2,使用Dockerfile 文件添加 bulid
使用Dockerfile 需要打包为镜像后 创建运行容器后会直接会存在数据卷配置。
步骤1,在root目录下创建一个docker文件夹,并在docker目录下创建一个Dockerfile 文件。
步骤2,编辑Dockerfile文件内容
map容器存数据?如上为基于tomcat8.5版本添加一个数据卷,容器内路径为 "/usr/local/tomcat/webapps"。宿主机的路径不设置则为系统生成指定的一个路径。
我们使用上图的基于centos的版本进行打生成镜像,语法 docker build -t mycentos01:1.0 . 或 docker build -f /root/docker/Dockerfile -t 镜像名:版本 . (注意最后有一个点)
查看打包后的镜像
大数据容器化,根据镜像创建启动运行容器并在容器内容器卷配置的目录内创建文件
查看本地挂载路径并进入查看里面的文件是否同步
实现原理:通过使用 --volumes-from 参数实现 新创建的容器使用之前容器创建好的数据卷为宿主机下同一文件目录,来实现多容器共享同一数据卷实现数据共享。
什么是各种相关数据的集合和容器。我们在三中第二中使用Dockerfile方式运行了一个 容器1,并且有相应的容器数据卷现在我们通过继承方式在创建两个容器 分别为os2和os3。在对其进行测试验证。
创建第二个容器命令:docker run -it --name os2 --volumes-from fd21ec49b28f mycentos01:1.0 /bin/bash
创建第三个容器命令:docker run -it --name os3 --volumes-from os2 mycentos01:1.0 /bin/bash
测试验证流程 我们先进入到第二个容器中查看之前容器数据卷中的数据centos1.txt是否同步进来。再在第二个容器中创建centos2.txt后,退出,并进入到第三个容器中,查看之前的两个容器中创建的文件centos1.txt centos2.txt 是否同步进来。然后我们在第三个容器中创建centos3.txt 并退出在宿主机数据卷目录下是否三个文件都存在,然后在宿主机上创建一个out.txt 随便进入一个容器查看是否out.txt 进行了同步。
文件存储数据,测试一下停掉一个容器后,在其他容器数据卷目录创建一个文件后,再启动停掉的容器,看看是否能恢复出现停机间其他容器创建的文件。测试结果文件存在即进行了数据恢复同步。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态