Docker从入门到精通(七)——容器数据共享
什么是容器数据共享?简单来说就是容器与容器之间数据共享,容器与宿主机数据共享。
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 目录内容都会改变。
Docker从入门到精通(七)——容器数据共享的更多相关文章
- MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用choose, ...
- Docker从入门到精通(一)——初识
1.Docker 是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容 ...
- Docker从入门到精通
1 容器简介1.1 什么是 Linux 容器1.2 容器不就是虚拟化吗1.3 容器发展简史2 什么是 Docker?2.1 Docker 如何工作?2.2 Docker 技术是否与传统的 Linux ...
- Docker从入门到精通(六)——容器通信
想要变成 Docker 的高阶玩家,搞懂 Docker 的容器通信是必不可少的. 1.需求 通常一个 Web 项目上线,我们会把开发完成的服务部署在Tomcat 服务器里面,然后需要的持久化数据会存放 ...
- docker从入门到精通再到放弃
docker说明 docker三大功能:构建(build).运输(ship).运行(run),只需要记下这三大功能就可以了 1.docker入门 docker安装及配置 a.docker源配置 cur ...
- docker 从入门到精通
转载请注明出处!!!! 1.Docker 基本指令 下载镜像 docker pull 镜像名称:版本 查看已有镜像 docker images 查看已有容器 docker ps 启动docker do ...
- 《OD Docker实战》Docker从入门到精通
一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ...
- Docker从入门到精通(二)——安装Docker
通过上面文章,我们大概知道了什么是Docker,但那都是文字功夫,具体想要理解,还得实操,于是这篇文章带着大家来手动安装Docker. 1.官方教程 https://docs.docker.com/e ...
- Docker从入门到精通(三)——概念与执行流程
前面我们大概介绍了docker是什么以及如何安装docker,但是对里面出现的一些名词,可能大家还不熟悉,这篇文章就来为大家解惑. 1.容器化平台 Docker 是提供应用打包,部署与运行应用的容器化 ...
随机推荐
- [noi713]魔法
分治,维护一个dp数组,当递归到区间[l,r]时,需要保证这个dp数组维护的是除去[l,r]以外的dp数组维护其实很简单,就是递归左区间是先将右区间加入,然后再将左区间加入(要先复原)然后递归右区间即 ...
- 链式调用Builder
使用Lombok实现链式调用 1.静态调用 User对象: 对象中必须有一个值不为空staticname作为指定的参数并调用对象 @Accessors(chain = true) @Getter @S ...
- x86汇编反编译到c语言之——(2)if语句
一. 测试的C语句及编译后的x86汇编代码 int a; int b; int main(void) { int c; if (c) a = 4; else b = 5; return 0; } 1 ...
- jmeter ssh command方式执行hive指令
Hive命令执行 打开任意一个安装了hive的服务器,进入hive bin 路径,可以看到存在以下文件(仅展示部分): -rwxr-xr-x 1 root root 1297 Jun 28 14:29 ...
- [APIO2020]有趣的旅途
注意到第一个点是可以钦定的. 那么我们考虑在重心的子树里反复横跳. 每次选择不同子树里的深度最大的点. 在同一颗子树里可能会在lca处出现问题. 那么我们选择重心,要考虑到会不会出现一颗子树不够选的操 ...
- 【AGC052A】
题目 \(有T组询问\) \(每次给一个n\) \(3个01串\),\(这三个串每个都有n个0\),\(n个1\),\(求一个2*n + 1的字符串\),\(使他成为S1+S1,S2+S2,S3+S3 ...
- Assemblytics鉴定基因组间SV
Assemblytics, 发表在Bioinformaticshttp://www.ncbi.nlm.nih.gov/pubmed/27318204,鉴定基因组间SV. Githup,https:// ...
- 64-Unique Binary Search Trees
96. Unique Binary Search Trees My Submissions Question Editorial Solution Total Accepted: 82788 Tota ...
- 17. yum
https://www.linuxidc.com/Linux/2015-04/116331.htm
- 零基础学习java------34---------登录案例,域,jsp(不太懂),查询商品列表案例(jstl标签)
一. 简单登录案例 流程图: 项目结构图 前端代码: <!DOCTYPE html> <html> <head> <meta charset="UT ...