docker存储
Docker 为容器提供两种存储数据的方式
由storage driver管理的镜像层和容器层
data volume
storage driver
-
容器有最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存储在这些层中。
-
新数据会直接写在最上面的容器层中
-
修改现有数据会先从镜像层将数据复制到容器层,修改后的数据直接保存在容器层中国,镜像层保持不变
-
如果多个层中有文件名相同的文件名,用户只能看到最上面的那层文件
-
Data Valume
Data Volume 本质上是Docker Host文件系统中的目录文件。能够直接被mount到容器的文件系统中。
Docker 提供两种类型的volume:bind mount和docker managed valume
bind mount
bind mount是将host上已存在的目录或文件mount到容器中
#通过-v将其mount到httpd容器中 docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd #-v的格式为 <host path>:<container path>
使用场景:单个文件的场景是:只需要向容器中添加文件,不希望覆盖整个目录
优缺点:bind mount的使用直观高效,易于理解,但是也有不足的地方:bind mount需要指定host文件系统的特定路径,这就限制了容器的可移植性,当需要将容器移植到其他host需要指定host文件系统的特定路径,这就限制了容器的可移植性。
docker managed valume
Docker managed volume 与bind mount在使用上最大的区别是不需要指定mount源,指明mount point 就行了
docker run -d -p 80:80 -v /usr/local/apache2/htdocs httpd #通过-v告诉docker需要一个data volume,并将其mount 到 /usr/local/apache2.htdocs #host上会固定在/var/lib/docker/volumes/**************/_data
容器和host之间的共享
Bind mount
Docker managed volume
容器和容器之间的共享
第一种方法是将共享数据放在bind mount 中,将其mount到多个容器
volume container
专门为其他容器提供volume的容器。它提供的卷可以是bind mount,也可以是docker managed volume
docker create --name vc_data \Bind mount 存放web server的静态问价
docker managed volume 存放的一些实用工具
其他容器可以通过--volume-from 使用vc_data这个volume container
docker run --name web1 -d -p 80 --volume-from vc_data httpd docker run --name web2 -d -p 80 --volume-from vc_data httpd docker run --name web3 -d -p 80 --volume-from vc_data httpdData-packed volume container
将数据打包起来到镜像中,然后通过docker managed volume共享
# Dockerfile FROM busybox:latest ADD htdocs /usr/local/apache2/htdocs VOLUME /usr/local/apache2/htdocs#创建镜像 docker build -t datapacked . #用新镜像创建data-packed volume container docker create --name vc_data datapacked #启动httpd容器并使用data-packed volume container docker run -d -p 80:80 --volume-from vc_data httpd数据共享
不同的 bind mount docker managed volume volume位置 可任意指定 /var/lib/docker/valumes/... 对已有的mount point的影响 隐藏并替换为volumes 原有数据复制到volume 是否支持单个文件 支持 不支持 权限控制 可设置为只读默认为读写权限 无控制,只能为读写权限 移植性 移植性弱,与host path绑定 移植性强,无需指定host 目录