Docker学习笔记(九)

volume如何让多个容器共享数据?

1、通过bind mount,将多个容器的volume绑定在host的同一目录,这样就形成共享数据了。

2、volume container,构建一个专门为其他容器提供volume的容器。

  docker create --name vc_data -v ~/htdocs:/usr/local/apache2/htdocs -v /other/useful/toos busybox

volume container本身不需要运行。

其他容器可以通过参数--volumes-from 使用vc_data的volume container

 

上述方式,归根都是在host的目录中存放,data-packed volume container则可以完全将数据放在volume container中。

 将数据打包到镜像中:

FROM busybox:lastest

ADD htdocs /usr/local/apache2/htdocs

VOLUME /usr/local/apache2/htdocs

指定目录创建挂载点。这样创建一个镜像后,创建该容器,然后类似volume container的方式调用该容器即可。

该方法可移植性很高,非常适合静态数据,如果是动态保存数据,则无效。


 

volume的备份、恢复、迁移、销毁

备份相当于host目录的拷贝。恢复使用之前备份目录代替即可。

迁移:需要将现有容器stop掉之后,再启动新的容器。

销毁:删除volume必须小心,因为删除后数据找不回来。docker 不会删除bind mount,但是对于docker managed volume,可以在rm 时添加-v参数将其一同删掉,前提是没有其他容器使用该volume。

如果有孤儿volume产生,可以通过docker volume ls查看,docker volume rm volumeID进行删除。docker volume rm $(docker volume ls -q)批量删除。

 

posted @ 2017-12-28 14:31  FlyerS  阅读(83)  评论(0)    收藏  举报