前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker从入门到精通(七)——容器数据共享

Docker从入门到精通(七)——容器数据共享

作者头像
IT可乐
发布2021-12-22 09:13:26
9270
发布2021-12-22 09:13:26
举报
文章被收录于专栏:IT可乐

什么是容器数据共享?简单来说就是容器与容器之间数据共享,容器与宿主机数据共享。

1、为什么需要数据共享?

①、数据持久化

比如我们有一个MySQL集群,通过容器启动,那么项目运行过程中的数据是保存在容器中的,假设容器被删除了,数据就丢失了,如果没有数据共享,那你就只能删库跑路了。

而有了数据共享,你就可以打通容器和宿主机的数据联通,将容器中的数据同步到宿主机,即使容器删除了,数据还是在本地的。

②、同步内容

前面的教程,我们每次要修改容器里面的内容,都得进入到容器中,而实际生产环境容器都是有很多个的,一个个修改,大家不用干活了。

那么你想不想在本地修改了,直接同步到容器?想就接着往下看。

2、命令挂载

docker run -it -v 宿主机目录:容器目录

比如我们将宿主机下面的 /home/webapps 目录挂载到Tomcat容器的 /usr/local/tomcat/webapps

docker run -it -v /home/webapps:/usr/local/tomcat/webapps -p 8083:8080 --name tomcat03 tomcat:latest /bin/bash

我们在容器的 /usr/local/tomcat/webapps 目录下新建 a.txt 文件,会在宿主机 /home/webapps 目录下找到这个文件;

同理在宿主机的 /home/webapps 目录下新建 b.txt 文件,你会在容器的 /usr/local/tomcat/webapps 目录下也能找到。

这样就完成了宿主机和容器文件目录的同步操作。

①、即使容器停止(不是删掉),宿主机挂载目录变动了,再次启动容器,宿主机改动还是能够同步到容器的。 ②、容器删掉,宿主机挂载目录不会被删掉。

3、检查挂载是否成功

docker inspect 容器id

4、匿名挂载和具名挂载

4.1 匿名挂载

docker run -v 容器内路径

比如给一个Tomcat容器匿名挂载:

docker run -d -P -v /usr/local/tomcat/webapps tomcat:8.0

然后通过 docker inspect 容器id,查看挂载情况:

Name 属性为一长串数字的一般都是匿名挂载,可以到下面的Source属性指定的目录找到宿主机挂载目录。

4.2 具名挂载

docker run -v 卷名:容器内路径

指定Tomcat挂载名称为 tomcatVolumeUrl

docker run -d -P -v tomcatVolumeUrl:/usr/local/tomcat/webapps tomcat:8.0

同样通过 docker inspect 容器id查看:

5、共享容器进行挂载

大家有没有发现一个问题,通过上面的命令进行数据共享,如果我们有多个容器,都需要挂载一个目录,但是挂载过程中,有一个容器命令目录写错了,那就会造成容器数据不同步,如何解决这个问题呢?

答案就是创建一个共享容器,创建共享容器的同时进行目录挂载,然后别的容器和这个共享容器关联即可。

实例演示:

①、宿主机创建目录

我们在 /home 下创建 /share_volume 目录,然后在这个目录下新建 index.html 文件,里面就一句 hello docker!!!。

②、创建共享容器

docker create --name tomcat_share -v /home/share_volume:/usr/local/tomcat/webapps tomcat:latest /bin/true

③、创建实际容器

创建的同时指定和共享容器关联。

docker run -d -p 8081:8080 --volumes-from tomcat_share --name tomcat01 -d tomcat docker run -d -p 8082:8080 --volumes-from tomcat_share --name tomcat02 -d tomcat

上面启动了两个容器,会发现更改宿主机的/home/share_volume 目录内容,两个容器的/usr/local/tomcat/webapps 目录内容都会改变。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、为什么需要数据共享?
  • 2、命令挂载
  • 3、检查挂载是否成功
  • 4、匿名挂载和具名挂载
    • 4.1 匿名挂载
      • 4.2 具名挂载
      • 5、共享容器进行挂载
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档