如何在不同的Docker机器上设置docker的redis / sentinel复制/监控?

比方说,我有3个独立的机器:

redis$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS redis-master * virtualbox Running tcp://192.168.99.101:2376 v1.10.1 redis-slave1 - virtualbox Running tcp://192.168.99.102:2376 v1.10.1 redis-slave2 - virtualbox Running tcp://192.168.99.103:2376 v1.10.1 

我想使用docker-compose轻松地将主机或从机部署到这三台机器中的一台。 现在我的docker-compose.yml文件看起来像这样:

 redis: image: redis:3.0 sentinel: image: redis:3.0 command: "redis-server --sentinel" 

我应该如何修改我的docker-compose.yml文件来使其工作? 最后,我希望能够像这样启动容器,例如:

 $ NODE_ROLE=master docker-compose up # on master machine $ NODE_ROLE=slave MASTER_ADDRESS=192.168.99.101:2376 docker-compose up # on slave machine 1 $ NODE_ROLE=slave MASTER_ADDRESS=192.168.99.101:2376 docker-compose up # on slave machine 2 

我看到一些使用redis + docker + sentinel设置的存储库,但是它们都在同一个docker主机上运行所有实例。

我认为你应该考虑使用https://github.com/docker/swarm

Swarm允许你把多台机器当作一个docker引擎。 然后,您可以让群集调度程序决定在哪里运行容器,或者使用约束将容器放在特定的节点上。