晚上读CloudMan所著《每天5分钟玩转Docker容器技术》一书,读到Docker存储一章。受作者启发,突然有感记录下来。
我们在专网内搭建地图服务器时,通常是部署个web服务器,并将地图数据拷贝至web服务器目录下,针对地图数据的拷贝实在令人头疼,文件总量大,单个文件小,拷贝起来特不方便,为此我们为它量身定制了一个系统,下次出去实施时直接拿系统镜像,但是一个系统实在也很笨重,而且占用更多的硬件资源。在Docker世界里难道没有办法解决吗,当然是不可能的,Docke就有办法为你解决。
作者在讲到如何进行容器的数据共享时,提到两种共享方式。
一是,利用host共享数据,所有容器都挂载到同一个host目录下实现容器的共享。但是将这么多文件的数据拷来拷去实在麻烦。
二是,利用volume container。volume container时专门为其他容器提供volume的容器。它的升级版时data-packed volume container,其实就是将数据打包进镜像中,然后通过docker managed volume将数据共享。
例如:
通过Dockerfile构建这样一个data-packed volume container镜像——datapacked
FROM busy box :latest
ADD /mapabc /usr/local/apache2/
VOLUME /usr/local/apache2/
docker create --name vc_data datapacked
其他web服务的容器使用该volume container就能共用该容器共享的volume,从而实现多个web地图服务
docker run -d -p 8080:80 --volume-from vc_data httpd