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)批量删除。

浙公网安备 33010602011771号