容器间数据共享~volume
一、简单了解
容器间数据共享简图:
容器间数据共享,核心原理就是在宿主机开辟一块空间,被其他容器共享,实现容器间文件内容的共享,只需少量的改动,其他容器都会生效。
数据卷,即保存数据的单位
volume数据卷的设置有两种方式,下面会进一步表述。
二、有两种通过命令设置数据卷的方法
一)、方式1. 通过 -v 挂载宿主机目录
1、格式
通过 -v 挂载宿主机目录,格式:docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
eg:docker run --name r1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat:8.5.46-jdk8-openjdk
ps:路径不能写错,区分大小写。缺点:有写错的风险
2、浅实践下
-v
挂载宿主机目录, 在宿主机目录/usr/webapps 新建文件夹v-test1 ,在文件夹里新建index.html ,随便写点什么。
-
step1: 把文件上传到宿主机服务器:
/usr/webapps
-
step2:设置新的tomcat容器完成数据卷的挂载:
docker run --name t1 -p 8000:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat
-
step3: 验证:在浏览器输入
宿主机ip:8000/v-test1/index.html
二)、方式2.实现形式:通过共享容器内挂载点--volumes-from
,其他容器指定此挂载点
1、格式
为方式一的改善:通过--volumes-from
共享容器内挂载点
- 1)、创建共享容器格式:
docker create --name gzpoint1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true
create :代表只创建不运行
/bin/true相当于一个占位符
- 2)、启动容器并指定挂载点:
docker run --name r1 -p 8001:8080 --volumes-from gzpoint1 -d tomcat
2、浅实践下
1)、创建共享挂载点容器
docker create -v:/usr/webapps:/usr/local/tomcat/webapps --name webapps tomcat /bin/true
2)、启动新容器并指定挂载点webapps
docker run --name r2 -p 8008:8080 -d tomcat
在宿主机目录/usr/webapps 新建文件夹v-test1 ,在文件夹里新建index.html ,随便写点什么
3)、验证
- 访问:宿主机ip:8008/v-test1/index.html
- 进入容器r2里面,在webapps路径可看到内容和宿主机/usr/webapps里的内容一致