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中,实现父子容器共享。对于功能来说,下面是测试过的共享的:
父子容器对应的目录数据共享,各容器修改、添加数据等都是同步共享的。数据卷的生命周期一直持续到没有容器使用它为止。

相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
目录
相关文章
|
2天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
139 93
|
5天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
52 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
4天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
29 17
|
4天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
54 12
|
5天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
46 10
|
9天前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
36 13
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
236 77
|
16天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
93 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序