如何利用CoreOS的机队构build有状态的docker服务架构?

与舰队使用的CoreOS使人们能够build立运行一些docker应用程序的服务。

但有没有办法运行docker服务,要求其状态保持在重新启动之间,要持久? 例如,数据库或服务必须存储一些文件以便以后共享。

因为据我所知,这个服务可以在core-1机器上启动,重启后会随机启动。 所以docker的数量可能会丢失。

维护数据库服务最简单的方法是始终将车队单元安排到同一台机器上。 您可以通过在车队单元文件中添加一个[X-Fleet]部分并将该单元分配给特定的X-ConditionMachineIDX-ConditionMachineMetadata 。 请参阅coreos文档 。

然后,您可以通过在主机上安装一个卷,将数据保存在Docker容器之外。 这样做的推荐方法是通过docker将这些数据包装在一个单独的数据容器中:

docker run --name mongodb-volume -v /home/core/mongodb-data:/data/db busybox docker run -p 27017 --volumes-from mongodb-volume mongodb:latest

由于特定机器上的/home/core/mongodb-data将存储持续的mongodb状态,并且该单元将始终安排在同一台机器上,这将解决您的问题。

您可以考虑在CoreOS群集上运行一些分布式文件系统。 这样无论你的数据库服务容器是以什么样的机器结束的,它总是能够使用从DFS挂载的数据库。