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

Ant*_* O. 7 docker coreos

机群一起使用的CoreOS 使得可以构建运行某些docker应用程序的服务.

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

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

jki*_*ens 8

维护数据库服务的最简单方法是始终将车队单元安排到同一台机器上.您可以通过向[X-Fleet]车队单元文件添加一个部分并将该单元分配给特定的X-ConditionMachineID,或者X-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状态,并且该单元将始终安排到同一台机器,这将解决您的问题.

  • 但是......如果该机器需要重新启动,则不再运行数据库服务器. (2认同)