我是 docker swarm 的新手,想了解 docker stack deploy 的工作原理
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
redis:
image: "redis:alpine"
当我运行这个命令时,它工作得很好
$ docker stack deploy -c docker-compose.yml mystack
Creating network mystack_default
Creating service mystack_web
Creating service mystack_redis
验证它
$ docker stack ps mystack
ID NAME IMAGE NODE
DESIRED STATE CURRENT STATE ERROR PORTS
rcci590y5c6o mystack_redis.1 redis:alpine
plakhera1.example.com Running Running 9 seconds ago
lty84a77b4my mystack_web.1 nginx:latest
plakhera2.mylabserver.com Running Running 2 seconds ago
现在我的问题是如何确保每次部署此应用程序/服务时,Redis 都会出现在 plakhera1.example.com 上,而 nginx 会出现在 plakhera2.example.com 上。我相信目前它随机选择节点,所以我怎样才能确保它总是只选择那些节点。
更新:场景是我的 web 是基本应用程序,但 Redis 做了很多繁重的工作,这就是为什么我总是希望 Redis 位于强大的节点上,有什么方法可以通过 docker stack deploy 指定 web 总是启动在 node1 上运行,在 node2 上运行 Redis