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

时间:2014-08-18 09:45:18

标签: docker coreos

fleet一起使用的CoreOS可以构建运行某些docker应用程序的服务。

但有没有办法运行docker服务,它需要在重启之间保持状态,才能持久化?例如,必须存储稍后要共享的某些文件的数据库或服务。

因为据我所知,该服务可以在core-1机器上启动(例如),并且重启将在另一台机器上随机启动。因此,码头工作量可能会丢失。

2 个答案:

答案 0 :(得分:8)

维护数据库服务的最简单方法是始终将车队单元安排到同一台机器上。您可以通过向车队单元文件添加[X-Fleet]部分并将设备分配给特定X-ConditionMachineIDX-ConditionMachineMetadata来执行此操作。请参阅coreos documentation

然后,您可以通过从主机安装卷来将数据保留在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状态,并且该单元将始终安排到同一台计算机,这将解决您的问题。

答案 1 :(得分:1)

您可以考虑在CoreOS群集上运行某些分布式文件系统。这样,无论数据库服务容器结束的任何机器,它都将始终能够使用从DFS挂载的数据库。