前言
本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍宿主、容器间数据共享,它的好处自然不言而喻,Tomcat集群就是这么玩儿的(多个tomcat服务,对应一套web应用)。
核心原理,在宿主机上开辟一片空间,各容器通过-v挂载方式,都指向该宿主机的同一目录,一处修改,其他各处数据自动同步更新。
一、本地实现容器数据共享的两种方法
1.普通方式:通过docker run -v实现
格式:docker run --name 容器名 -v宿主机路径:容器内挂载路径 镜像名
#示例
docker run --name tomcat1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat:latest
注:这里的-v 是volumes 数据卷的意思,等价于--volumes。
有没有发现什么问题?
挂载点是固定的,宿主机的一个数据卷,往往要被多个容器挂载,如果能给-v后面的挂载目录起个别名,是不是很Nice?
当然可以!!
2.高端方式:创建共享容器
1)docker create -v 创建共享容器,并起别名
#仅仅是创建共享容器,该命令并不会直接run容器,尾部的 /bin/true没有实际意义,占位符而已
#-v 后面的宿主机路径和容器路径中间,用:隔开,路径都需要是绝对路径
docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
2)docker run --volumes-from 指定共享容器
docker run -d --volumes-from webpage --name tomcat1 tomcat:latest
docker run -d --volumes-from webpage --name tomcat2 tomcat:latest
这种方式,是不是 很beautiful?爽心悦目,感觉在使用java编程一样,抽取共用常量为final static。
二、远程共享数据卷的使用
1.安装远程共享插件
docker plugin install --grant-all-permissions vieux/sshfs #安装插件(会比较慢,需耐心等待一下)
注:不安装此插件,稍后会报error looking up volume plugin vi