docker容器数据卷介绍、使用、数据容器卷volumes-from的使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 命名的容器挂载数据卷,其他容器通过挂载这个父容器来实现数据共享,挂载数据卷的容器称为数据卷容器,以下二、三主要讲与宿主机挂载容器数据卷。四讲其他容器通过volumes-from来挂载父容器来实现数据共享。>通俗点容器数据卷是将docker中的容器(container)中产生的数据持久化到宿主机文件中并实现数据共享,其他容器可以通过数据卷来链接到这个容器,实现数据共享。
一、简介

命名的容器挂载数据卷,其他容器通过挂载这个父容器来实现数据共享,挂载数据卷的容器称为数据卷容器,以下二、三主要讲与宿主机挂载容器数据卷。四讲其他容器通过volumes-from来挂载父容器来实现数据共享。

通俗点容器数据卷是将docker中的容器(container)中产生的数据持久化到宿主机文件中并实现数据共享,其他容器可以通过数据卷来链接到这个容器,实现数据共享。
二、直接命令添加(使用-v命令添加)

添加大体有两种方式,首先要明白我们添加数据卷通常是在新建并启动容器时关联的,离不开上次说的操作容器的命令:https://blog.csdn.net/Chenftli/article/details/91412352

1.不带权限的命令(宿主机运行新建并启动容器),
docker run -it -v /宿主机目录绝对路径:/容器内目录 镜像名

绑定后容器和宿主机之间对应的目录数据共享,且容器具有修改、执行等权限,容器停止后,主机修改后的数据也会同步到容器中。

2.带权限命令(下面指定为只读权限):
docker run -it -v /宿主机目录绝对路径:/容器内目录:ro 镜像名

绑定后容器和宿主机之间对应的目录数据共享,但容器只具有只读权限,容器停止后,主机修改后的数据也会同步到容器中。

三、DockerFile添加
1.创建一个DockerFile文件,如果是一个项目的化可以在项目的顶级目录下创建这个文件,之后我们会通过这个DockerFile文件来build成我们所需要的镜像。

DockerFile中我们主要是通过VOLUME指令来给镜像添加一个或多个数据卷
例如:

FROM centos
VOLUME ["/dataVolume1", /dataVolume2]
CMD echo  "-------successful-----------"
CMD /bin/bash

上述中FROM是它依赖的镜像,这里依赖了centos。
VOLUME是挂载数据卷,/dataVolume1、/dataVolume2都是容器中需要实现数据共享的目录(挂载数据卷的目录)。
注意:宿主机共享的目录是自动生成的,因为无法判断人写的宿主机的目录是否具有。所以只有使用默认的目录。这个目录可以在构建容器实例后通过docker inspect 容器名称(或ID)来查看volumes参数。
CMD 是运行shell命令的,上面两条第一条相当于在控制台上输出-------successful-----------,第二条相当于打开容器的/bin/bash命令窗口。

2.然后build生成一个新的镜像

例如:
docker build -f /path/datafile -t mycentos .
上述命令中-f为强制执行,可以避免一些麻烦,/path/datafile为DataFile文件的路径, -t为容器分配一个伪终端,在上一篇文章有写。mycentos为新建镜像的名称。注意最后有 “.” 结尾。

3.run命令用新生成的镜像运行一个容器

例如:

docker run -it mycentos

上述中-it指令是以交互式模式运行并给一个伪终端,mycentos是刚才新建的镜像的名称。

4.通过这种方式生成的容器,可以看出容器和宿主机之间对应的目录数据共享,且容器具有修改、执行等权限,容器停止后,主机修改后的数据也会同步到容器中。
四、volumes-from实现父子容器数据共享
1.如下命令方式:
docker run -it --name con2 --volumes-from con1 mycentos

上述命令中,run运行一个新的容器con2,--name是给容器命名。--volumes-from是挂载数据卷,将con2容器的数据卷(这里con1容器的数据卷当然是通过二、三两种方法挂载的)挂载到con1中,实现父子容器共享。对于功能来说,下面是测试过的共享的:
父子容器对应的目录数据共享,各容器修改、添加数据等都是同步共享的。数据卷的生命周期一直持续到没有容器使用它为止。

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
目录
相关文章
|
1月前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎
|
1月前
|
存储 持续交付 Docker
Docker:轻量级容器技术重塑应用交付
Docker:轻量级容器技术重塑应用交付
|
1月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
1月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
1月前
|
存储 持续交付 Docker
Docker:颠覆传统开发的轻量级容器革命
Docker:颠覆传统开发的轻量级容器革命
|
2月前
|
Docker 容器
熟悉Docker容器管理命令:start、stop与restart详细使用指南
掌握这些Docker容器管理命令对于维护应用程序的正常运行至关重要。在实际操作中,应注意容器配置、关联资源以及日志等信息,确保各项操作都能够顺畅并且安全地执行。
216 0
|
2月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
239 57
|
2月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
236 58
|
2月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
296 11