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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
目录
相关文章
|
3天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
|
3天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷
|
3天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
|
3天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)
|
3天前
|
Java 虚拟化 Docker
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
|
3天前
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
|
3天前
|
Linux Docker 容器
更改docker容器中的时间而不影响宿主机
更改docker容器中的时间而不影响宿主机
|
3天前
|
Ubuntu Linux Go
docker容器启动报错
docker容器启动报错解决
|
网络协议 Java Maven
docker将数据从宿主机挂载到容器的方式(二)
docker将数据从宿主机挂载到容器的方式(二)
431 0
docker将数据从宿主机挂载到容器的方式(二)
|
存储 Docker 容器
docker将数据从宿主机挂载到容器的方式(一)
docker将数据从宿主机挂载到容器的方式(一)
348 0
docker将数据从宿主机挂载到容器的方式(一)