看到这篇文章,你一定是在学习 docker 相关的知识,没错,容器虚拟化技术。神奇的地方在于我们的一些中间件 ,还有像tomcat 这样的,nginx 这样的,都可以以容器的形式运行。好处就不多说了,我说一下疑问,自己前一段时间学了 ELK,就是一套对日志数据进行捕获监控分析挖掘的技术。 那么疑问来了,之前部署这些,我们都能看到运行在linux服务器上的像nginx 这些,那么容器化了以后,我搭建的ELK环境上哪儿去分析监控日志数据呢?
这就是今天的docker 相关的一个主题,数据卷,也是本篇文章的主角。
简单的看一下需求:我们希望运行在容器中的数据能够保存在硬盘中。
# # 容器就像是集装箱一样
docker 容器就像码头的集装箱一样,用于隔离,我们有时候又有需求进行互通。
# # 数据卷是什么?
# # 容器能干什么
实现主机到容器,容器到主机的数据 共享。
可以理解为一个内置的活动硬盘。
主要做容器数据持久化,和容器之间数据的共享
# # 容器数据卷怎么操作,怎么添加
一共有两种方案,一种是直接命令添加,一种是通多 dockerFile
# # 命令的形式添加容器数据卷
docker run -it -v /宿主机目录:/容器目录 镜像名
这条命令,会在宿主机上创建一个目录,我们可以在上边指定,在容器里边创建一个制定名字的目录。
查看是否挂载成功:根据 容器ID 查询 然后docker inspect 容器号
测试是否能够共享数据:在宿主机中创建一个文件,发现容器里边也有同样的一个文件。
# # docker 里边起的容器 关闭以后,数据卷数据还能同步吗?
答案是肯定的,仍然能够同步
# # 看一下 通过 DockerFile 的方式来加数据卷
这就相当于是下边的 docker run -it -v 的命令
接着构建成镜像 docker build -f /dockerFile文件的目录 -t 作者/镜像名字
上边的内容就是dockerFile ,红色框起来的就是创建两个数据卷
你会发现,哎没有和宿主机对应起来呀。这个是默认的,默认会对应宿主机的一个目录,可以根据
docker 容器ID inspect 命令来查看对应的目录是什么
前边的内容已经可以让我们在 容器 和 宿主机 打穿了通道,接下来就是 容器与容器之间的打开通道了。
docker run -it --name dc01 centos
启动一个centos 容器, 重命名为 dc01 , centos 为镜像名字
--valumes-from
再启动一个容器,命名为 dc02 然后与 dc01 容器的数据卷打开通道。
以此为例, 我们启动了 A B C 三个容器, 只要已经建立了共享数据卷 ,可以理解为建了一个游乐园,最开始A进来了,B进来了,如果A走了,还是不耽误B在这里边,如果C也进来了,C和B仍然可以共享数据。