前言
docker容器之间是相互隔离的,每个容器都有属于自己的文件系统。但是在做项目的时候碰到了需要共享目录的需求,比如做flume远程采集maven的日志数据的时候用到了tail -f [数据文件目录],做分布式项目的时候我们要收集数据总不可能直接在数据文件目录上填写另一台服务器的目录,但是又有这样的需求怎么办呢?用docker的数据卷目录挂载可以实现。
一、容器和宿主机目录挂载
在创建容器的时候用-v命令挂载,具体使用为
docker run -v /主机目录:/容器目录
加入在宿主机上的 /home/log/test.txt 文件,想要该txt文件和容器里面的/home/systemlog目录共享,那么就
docker run -it -v /home/log:/home/system [镜像名]
然后可以用docker inspect 容器ID
命令查看是否挂载成功。
二、容器和容器目录挂载
刚才的同步是容器和宿主机的同步,那么如果想容器和容器之间同步怎么办呢?有两种方式,第一种是两个容器同时挂载宿主机的一个目录,相当于宿主机做了一个桥接作用,还有第二种是用--volumes-from
命令,该方式是直接同步两个容器的。
docker run -it --name="[需要创建的容器名]" --volumes-from [需要同步的容器名] [镜像名]
总结一下。
当一方文件删除了另一方文件也会删除,增加了也一样,文件内容也是这样。但是如果容器挂掉了或者没了那么数据还是会存在的。