当前位置: 首页 > wzjs >正文

成都哪家网站建设好成都网络营销公司

成都哪家网站建设好,成都网络营销公司,本地建设网站软件下载,公司做网站需要好多钱数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器。 命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载…

数据卷容器

数据共享

上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为 数据卷容器(Data Volume Container)

通俗地来说,docker 容器数据卷可以看成使我们生活中常用的 U 盘,它存在于一个或多个的容器中,由 docker 挂载到容器,但不属于联合文件系统,Docker 不会在容器删除时删除其挂载的数据卷。在创建一个容器时候,使用命令绑定一个父容器,这个父容器就是 数据卷容器

特点:

  • 数据卷可以在容器之间共享或重用数据
  • 数据卷中的更改可以直接生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

命令格式:docker run --volumes-from <数据卷容器名> <镜像名[:TAG | ID]>

创建三个容器 tomcat10、tomcat11、tomcat12,其中 tomcat10 是数据卷容器

[root@k8s-master ~]# docker run -d -P --name tomcat10 -v tomcat10:/usr/local/tomcat/webapps tomcat:8.5.73
c96daf52665e7955a7f34c513c9dd5be7a2206e4f7b3519a365a289bbe78f9d6
[root@k8s-master ~]# docker run -d -P --name tomcat11 --volumes-from tomcat10 tomcat:8.5.73
fd1460b6394c4085170298d0916a521669d4d5050086450b151b41fba97e3c19
[root@k8s-master ~]# docker run -d -P --name tomcat12 --volumes-from tomcat10 tomcat:8.5.73
e023742c8c9f6afcf24bb53861ecfd21c7abb0042ea096c544826d1106b9a983

 证明三个容器的数据是否共享

已经创建好三个容器,并且 tomcat10 容器的数据卷目录是 tomcat10。我们可以在 tomcat10 容器的 webapps 目录下创建一个 test.txt 文件,看看 tomcat11 容器和 tomcat12 容器的 webapps 是否同步数据。

首先进入 tomcat10 容器的 webapps 目录,创建 test.txt 文件

[root@k8s-master ~]# docker exec -it tomcat10 /bin/bash
root@c96daf52665e:/usr/local/tomcat# cd webapps
webapps/      webapps.dist/ 
root@c96daf52665e:/usr/local/tomcat# cd webapps/
root@c96daf52665e:/usr/local/tomcat/webapps# touch test1.txt
root@c96daf52665e:/usr/local/tomcat/webapps# ls 
test1.txt

 然后我们进入 tomcat11 容器,看文件是否同步过来,并且创建 test2.txt 文件

[root@k8s-master u]# docker exec -it tomcat11 /bin/bash
root@fd1460b6394c:/usr/local/tomcat# cd webapps/
root@fd1460b6394c:/usr/local/tomcat/webapps# ls -l
total 0
-rw-r--r--. 1 root root 0 Feb 27 12:24 test1.txt

然后我们进入 tomcat12 容器,看文件是否同步过来

[root@k8s-master u]# docker exec -it tomcat12 /bin/bash
root@e023742c8c9f:/usr/local/tomcat# cd webapps/
root@e023742c8c9f:/usr/local/tomcat/webapps# ls -l
total 0
-rw-r--r--. 1 root root 0 Feb 27 12:24 test1.txt

 最后我们看看宿主机的挂载目录

[root@k8s-master ~]# cd /var/lib/docker/volumes/tomcat10/_data/
[root@k8s-master _data]# ls
test1.txt

 

如果删除了挂载的容器(包括 dbdata、db1 和 db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。这可以让用户在容器之间升级和移动数据卷。 

数据备份

可以利用数据卷对其中的数据进行进行备份、恢复。

数据备份命令格式:docker run [options] --volumes-from <数据卷容器> [-v <宿主机绝对路径>:<随机路径>] <镜像名>:[TAG | ID] tar cvf <随机路径/备份名> <数据卷容器路径>

 不指定宿主机挂载目录下和容器备份目录,备份 tomcat10 容器的数据卷 webapps 目录

[root@k8s-master _data]# docker run --name tomcat-backup --volumes-from tomcat10 tomcat:8.5.73 tar cvf /backup.tar /usr/local/tomcat/webapps
tar: Removing leading `/' from member names
/usr/local/tomcat/webapps/
/usr/local/tomcat/webapps/test1.txt
[root@k8s-master _data]# find / -name backup.tar
/var/lib/docker/overlay2/bc35ab2d75946a2392d68ddd0872a9656b3013a0da8e771ee4bea0dfc1bdbda2/diff/backup.tar

如果容器删除,那么该方式的备份文件也被删除,并且备份目录是容器 ID 命名,并非容器名,看一长串字符串就知道了。 

指定宿主机挂载目录下和容器备份目录,备份 tomcat10 容器的数据卷 webapps 目录 

[root@k8s-master _data]# docker run --volumes-from tomcat10 -v /opt/backup:/backup tomcat:8.5.73 tar cvf /backup/backup.tar /usr/local/tomcat/webapps
tar: Removing leading `/' from member names
/usr/local/tomcat/webapps/
/usr/local/tomcat/webapps/test1.txt
[root@k8s-master _data]# find / -name backup.tar
/var/lib/docker/overlay2/bc35ab2d75946a2392d68ddd0872a9656b3013a0da8e771ee4bea0dfc1bdbda2/diff/backup.tar
/opt/backup/backup.tar

 注意:容器的挂载路径要和备份的文件路径保持一致,才能备份成功。

数据恢复

备份了数据,那么就需要进行数据恢复。

恢复命令格式:docker run --volumes-from <恢复到哪个数据卷容器> [-v <宿主机绝对路径>:<随机路径>] <镜像名>[:TAG | ID] tar xvf <随机路径 | 路径>

 数据恢复到 tomcat20 容器的数据卷里

[root@k8s-master _data]# docker run -d --name tomcat20 -v tomcat20:/usr/local/tomcat/webapps tomcat:8.5.73
6b1b3fa0e74149197449bf0129771ff462f781d7c476365df9da1c0cc80fecd7[root@k8s-master _data]# 
[root@k8s-master _data]# docker run --volumes-from tomcat20 -v /opt/backup:/backup tomcat:8.5.73 tar xvf /backup/backup.tar -C /usr/local/tomcat/webapps/
usr/local/tomcat/webapps/test1.txt

-C / 代表解压到根目录下,因为压缩包的文件基于根目录的,否则解压的目录是基于 /backup

原理:此时 tomcat20 挂载目录是 /usr/local/tomcat/webapps,而新的容器只要挂载了 tomcat20 容器,它们两个的 /usr/local/tomcat/webapps 形成关联,新的容器的这个目录发生改变,则 tomcat20 的挂载目录也会发生改变,所以解压文件到新的容器的该目录下,实际上也是解压文件到 tomcat20 的挂载目录下,也就是实现恢复数据。

[root@k8s-master _data]# docker exec -it tomcat20 /bin/bash
root@6b1b3fa0e741:/usr/local/tomcat# cd webapps/
root@6b1b3fa0e741:/usr/local/tomcat/webapps# ls
test1.txt

 

挂载特性

关于到底是宿主机的挂载目录覆盖容器的挂载目录,还是反过来覆盖:

  • 默认目录挂载:
    • 当宿主机挂载目录已经存在时,双方挂载完成后,宿主机挂载目录覆盖容器挂载目录
    • 当宿主机挂载目录不存在时,双方挂载完成后,容器挂载目录覆盖宿主机挂载目录
  • 具体目录挂载
    • 当宿主机挂载目录无论存不存在,双方挂载完成后,宿主机挂载目录都会覆盖容器挂载目录

默认目录挂载

宿主机容器运行结果
文件存在文件存在挂载成功,宿主机文件内容覆盖容器文件内容
目录存在目录存在挂载成功,宿主机目录内容覆盖容器目录内容
..................
文件不存在文件存在挂载成功,容器文件内容覆盖宿主机文件内容
目录不存在目录存在挂载成功,容器目录内容覆盖宿主机目录内容
..................
其他和 具体目录挂载 类似

具体目录挂载

宿主机容器运行结果
文件存在文件存在挂载成功,宿主机文件内容覆盖容器文件内容
目录存在目录存在挂载成功,宿主机目录内容覆盖容器目录内容
------------------
文件不存在文件存在挂载成功,宿主机创建空文件,并覆盖掉容器的文件,导致也为空
目录不存在目录存在挂载成功,宿主机创建空目录,并覆盖掉容器的文件,导致也为空
------------------
文件存在文件不存在挂载成功
目录存在目录不存在挂载成功
------------------
文件存在目录存在容器启动失败
目录存在文件存在容器启动失败
------------------
目录不存在目录不存在挂载成功,Docker 会自动在宿主机和容器内新建目录
目录不存在文件存在容器启动失败
目录不存在目录存在挂载成功,宿主机空目录内容覆盖容器内目录(空)
http://www.dtcms.com/wzjs/320497.html

相关文章:

  • 暂时关闭wordpress插件seo优化与sem推广有什么关系
  • 如何知道一个网站是谁做的软文发稿网站
  • 网站建设及推广好学习吗网页模板大全
  • 神马站长平台新网站百度多久收录
  • php网站开发txtseo关键词推广方式
  • wordpress首页弹窗杭州网站优化多少钱
  • 导购网站如何做免费推广2022最新版百度
  • 公众号江苏建设信息网站如何制作自己的链接
  • 建立网站容量天津seo网站排名优化公司
  • 一个网站需要怎么做南宁百度seo排名价格
  • 哪个网站可以做今日头条排版百度seo正规优化
  • 松江网站建设360搜索引擎首页
  • 怎么做网站安全检测本网站三天换一次域名
  • 做网站用什么后台网络营销过程步骤
  • 互联网公司排名前1000个百度seo引流怎么做
  • 网站程序的设计费用亚马逊关键词搜索器
  • 建网站盈利的几种方式个人网站源码免费下载
  • 大型网站建设济南兴田德润团队怎么样百度投诉电话24小时
  • 微软哪个软件做网站叶涛网站推广优化
  • 建立网络平台需要什么武汉seo公司排名
  • 红河蒙自网站开发百度百度一下首页
  • 工信部查询网站备案英雄联盟韩国
  • 美仑美家具的网站谁做的推广方案模板
  • 河北建筑培训网实名认证百度刷排名优化软件
  • 网站建设竞争对手分析长沙百度网站优化
  • 苏州哪家公司做网站网页制作代码html制作一个网页
  • 孝义网站开发公司自媒体怎么做
  • 云南网站建设首选公司2024小学生时事新闻十条
  • 做家教需要什么哪个网站的会员外链购买平台
  • 热 综合-网站正在建设中-手机版品牌如何推广