数据卷容器

什么是数据卷容器?

容器和容器之间实现数据共享

  • 一个容器先于宿主机创建挂载方式,宿主机就会有改卷的目录
  • 第二个容器使用命令--volumes-from 第一个容器,共享使用了第一个容器与宿主机创建的卷。第一个容器就被称之为数据卷容器
  • 第三个容器使用命令--volumes-from 第一个容器,共享使用了第一个容器与宿主机创建的卷
  • ……

总结:数据卷容器,实际上是第一个容器跟宿主机创建了卷,其他容器通过第一个容器使用这个卷。

  • 类似于具名挂载,具名挂载是-v的时候选择卷名,减少重复输入相同路径,输入卷名就可以。
  • 而这个是先让第一个跟宿主机先创建卷,通过--volumes-from这个容器名,来使用这个卷
  • 区别就是,具名挂载:-v 卷名;数据卷容器挂载:--volumes-from 容器名
  • 数据卷容器的生命周期一直持续到没有容器使用为止,虽然容器不在了,卷以及本地目录还在,但这种方式叫做数据卷容器
  • 换汤不换药,仅仅是我个人理解,不喜忽喷

#docker01容器,后面docker02、docker03都会--volumes-from docker01;因此docker01就是一个数据卷容器

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 8 months ago 209MB

# 启动镜像,创建容器,使用匿名挂载方式,容器挂载路径为容器根目录下的volume文件夹
[root@localhost ~]# docker run -it --name docker01 -v /volume 300e315adb2f /bin/bash
[root@7b7b500a1959 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume
[root@7b7b500a1959 /]# cd volume/
[root@7b7b500a1959 volume]# touch ceshi.java
[root@7b7b500a1959 volume]# ls
ceshi.java
[root@7b7b500a1959 volume]#

#docker02容器,--volumes-from docker01;

[root@localhost ~]# docker run -it --name docker02 --volumes-from docker01 300e315adb2f /bin/bash
[root@259ffb447fc3 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume
[root@259ffb447fc3 /]# ls /volume/
ceshi.java

#docker03容器,--volumes-from docker01;

[root@localhost ~]# docker run -it --name docker03 --volumes-from docker01 300e315adb2f /bin/bash
[root@ecb8e7443ea2 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume
[root@ecb8e7443ea2 /]# ls volume/
ceshi.java

# 思考!,删除数据卷容器docker1后,docker02和docker03是否还看可以访问这个目录?

# 当然可以,我就不试了,你把docker1删了,但是卷还在,所以对其他两个没有任何影响;
# 如果我们使用命令volume rm 把卷删了,会发生什么情况?猜一下,docker01自身这个目录应该是在的,但是另外两个容器访问不了,因为毕竟是docker01将自己的volume目录贡献出去的。(文首总结内容是根据猜想来的)
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb8e7443ea2 300e315adb2f "/bin/bash" 37 minutes ago Exited (130) 9 minutes ago docker03
259ffb447fc3 300e315adb2f "/bin/bash" 37 minutes ago Exited (0) 9 minutes ago docker02
7b7b500a1959 300e315adb2f "/bin/bash" 40 minutes ago Exited (0) 11 minutes ago docker01

# 查看docker01容器详细信息,获取卷的名称
[root@localhost ~]# docker inspect 7b7b500a1959

#找到了开始删除,发现删不掉,加了强删除-f,依旧不行,提示有容器在使用
#把docker01、docker02、docker三个容器都stop掉,哎,还是删不掉
[root@localhost ~]# docker volume rm -f 88cedeabc85d030bfcab43f03f5aabbea99a7f4c4f211cd691ee492cb160f9c8
Error response from daemon: remove 88cedeabc85d030bfcab43f03f5aabbea99a7f4c4f211cd691ee492cb160f9c8: volume is in use - [ecb8e7443ea251a0383ededfa6306fdf24b05b6194985da5a3fd880af1f5f53a, 7b7b500a19592b72943b28badf6a95d04937d3e363936e4c7775f9c44aae61d1, 259ffb447fc3e7abe0868f7da606bd988fbf7582ee96ec21dbf075c6cfdb6165]

#分别查看另外两个容器的挂载信息,发现另外两个容器的卷都是88cedeabc85d030bfcab43f03f5aabbea99a7f4c4f211cd691ee492cb160f9c8
[root@localhost ~]# docker inspect ecb8e7443ea251a0383ededfa6306fdf24b05b6194985da5a3fd880af1f5f53a
[root@localhost ~]# docker inspect 259ffb447fc3e7abe0868f7da606bd988fbf7582ee96ec21dbf075c6cfdb6165

# 分析,相当于docker02、docker03虽然是通过--volume from docker01 实现数据同步的;但是各自都同步了这个目录;docker01数据容器卷就可以理解为具名挂载的卷名。通过实践证明,文首总结的内容。
# 删哪个容器这个目录以及文件都在,即使三个容器全删完了都还在,因为宿主机还有。妙啊!!!

需求:多个mysql同步数据

[root@localhost ~]# docker run -d -p 3310:3306 --name mysql01 -v /home/mysql/conf:/etc/mysql/conf.d  -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

[root@localhost ~]# docker run -d -p 3310:3306 --name mysql02 --volumesfrom-mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

[root@localhost ~]# docker run -d -p 3310:3306 --name mysql03 --volumesfrom-mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 这个时候三个数据库容器的数据就实现同步了

Docker系列(20)- 数据卷容器的更多相关文章

  1. 【Docker】利用数据卷容器来备份、恢复、迁移数据卷

    利用数据卷容器来备份.恢复.迁移数据卷 可以利用数据卷对其中的数据进行进行备份.恢复和迁移. 备份 首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载 ...

  2. Docker系列八: 数据卷

    什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射到本 ...

  3. 聊聊Docker数据卷和数据卷容器

    当程序在容器运行的时候,特别是需要与其他容器中的程序或容器外部程序进行沟通交流,这时需要进行数据交换,作为常用的两种沟通数据的方式,网络通信与文件读写是需要提供给程序的支持, [数据卷] 文件是数据持 ...

  4. 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理

    目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...

  5. docker对数据卷容器进行备份

    转载请注明出处 官网的数据以及各大博客都没有对这个的具体说明,本人也是理解了好久. 我们使用docker的过程中,使用共享的数据卷是经常的,那么.我们要怎么进行备份呢?   首先,我们得了解下面4个命 ...

  6. Docker学习笔记 - Docker的数据卷容器

    一.什么是数据卷容器 如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器. 数据卷容器:用于容器间的数据共享,主动挂载宿主机目录,用于其他容器挂载和共享. 二.数据卷容器的操作 1.创建 ...

  7. Docker 数据卷容器

    如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器. 数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的. 首先,创建一个命名的数据卷容器 dbdata: $ sud ...

  8. docker 数据卷和docker数据卷容器以及数据卷的备份和还原

    一:数据卷 1.什么是数据卷 数据卷是通过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供服务,数据卷是在docker宿主机当中,数据卷可以是文件也可以是文件夹. 2.特点 1.数据卷在容 ...

  9. Docker数据卷容器备份、恢复

    1.备份数据卷容器 使用数据卷来备份数据,通过指定本地的一个文件路径,对应到容器中的路径,运行tar命令将重要的文件打包备份. $ cd /home/xm6f/dev $ docker run --v ...

随机推荐

  1. Apache/Nginx/IIS日志记录的各个字段内容与含义

    一.Apache 1.1 Apache日志文件名称及路径介绍 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access_log(在Windows上是 ...

  2. Linux 第一个静态库 (两种方法)

    方法1 --------------------------------------------- Linux下 静态库 一般为.a为扩展名 类似  lib***.a   的文件名.利用静态函数库编译 ...

  3. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)

    0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...

  4. pgsql日期树数值类型指定与介绍

    http://www.postgres.cn/docs/9.3/datatype-net-types.html#DATATYPE-INET  文档有详细的pgsql介绍 使用案例: SELECT to ...

  5. flink的watermark机制你学会了吗?

    大家好,今天我们来聊一聊flink的Watermark机制. 这也是flink系列的的第一篇文章,如果对flink.大数据感兴趣的小伙伴,记得点个关注呀. 背景 ​ flink作为先进的流水计算引擎, ...

  6. 一次PHP大马提权

    记一次PHP提权 发现 PHP大马:指木马病毒:PHP大马,就是PHP写的提取站点权限的程序:因为带有提权或者修改站点功能,所以称为叫木马. 自从师哥那里听说过之后,一直感叹于PHP大马的神奇...但 ...

  7. 致敬mentohust,路由器使用Socket认证华科校园网

    致敬mentohust,路由器使用Socket认证华科校园网 前言: 上一篇文章中,为了解决ESP32华科无线网认证的问题,我成功把网页认证机制用Python+Socket复现.但痛点依然存在,无线网 ...

  8. 20210824 Prime,Sequence,Omeed

    考场 T1 貌似是 luogu 上原题 T2 计数,想起了这题和这题,但没有 \(n^2\) 一档的分...准备打个表 T3 期望 DP,但暴力是 \(O(qn)\) 的,发现 \(combo\) 的 ...

  9. noip模拟45

    A. 打表 首先注意这道题数组下标从 \(0\) 开始 可以找规律发现是 \(\displaystyle\frac{\sum |a_i-a _ {ans}|}{2^k}\) 那么严谨证明一下: 由于两 ...

  10. 知乎大佬图文并茂的epoll讲解,看不懂的去砍他

    select.poll.epoll的文章很多,自己也看过不少经典好文.不过第一次看到讲的如此通俗易懂.又图文并茂的.因此拿来分享下,供后续翻看学习. 原文链接:https://zhuanlan.zhi ...