Paas中如果使用docker作替代虚拟机,那不可避免的就要考虑应用如何来持久化数据。
数据容器
1.如何使用? docker在建立实例时可以使用image中的空间,也可以在建立时使用-v来创建一个共享容器。然后可以让其他容器使用。
1
2
|
docker run -v /var/volume -name Volume_Container ubuntu14.04 /bin/bash
|
要使用该容器的实例可以在启动时用-volumes-from参数来指定
1
2
|
docker run -d -volumes-from Volume_Container -name App_Container ubuntu14.04 linux_command
|
这样就可以将数据持久化到数据容器中,当再次启动实例时,还是使用该数据容器就好。 2.如何迁移? 如果应用将数据和计算分离,那么就可以很容器的再其他地方重新启动新的计算实例。 对于数据容器而言,也是一个容器,如果要迁移数据容器,就和保存普通容器一样,将容器提交到repo中,然后从其他 地方再次启动。 当然,也可以将数据导出,然后重新导入一个全新的容器,来做数据迁移。
host共享目录
1.如何使用? docker也可以在启动容器时,直接指定host的目录挂在到容器中,这样该目录下的信息就可以作为共享数据存在。
1
2
|
docker run -i -t -v /var/volume:/mnt ubuntu/14.04 /bin/bash
|
当再次启动时,挂载host上的相同目录就可以。 2.如何做数据迁移? 数据直接存放在host的相应目录上,这样,就可以直接copy到其他机子,然后启动新实例。 当然,如果直接使用共享存储的话,数据就无需考虑迁移了。
两种方式的比较
- 数据容器 占用的是docker中启动实例的磁盘空间。一般一个容器默认为10G的精简卷。 使用这种方式,无需再提供额外的存储。
- host共享目录方式 占用的是host主机的磁盘空间。这样需要每个host要专门规划一个目录 来存放数据。如果使用共享存储,例如ipsan,或者nas等,就需要引入其他存储设备。 使用这种方式,存储的容量将不会受到容器的影响。