如何在Docker Swarm的manager节点强制创建docker service?
Docker Swarm强制将服务部署到Manager节点的方法
完全可以通过Swarm内置的节点角色标签实现,不需要提前知道节点主机名,具体方案如下:
命令行创建服务时添加角色约束
执行创建命令时直接指定node.role约束即可,示例命令:docker service create \ --constraint node.role==manager \ --name <自定义服务名> \ <你的镜像名>node.role是Docker Swarm默认给每个节点添加的内置元数据标签,取值固定为manager或者worker,该约束会自动匹配所有管理角色的节点,完全不受节点主机名的影响。Stack部署(Compose文件)时添加约束
如果使用docker stack deploy方式部署,在compose配置文件的对应服务下添加部署规则即可,示例配置:version: '3.8' services: 你的服务名: image: 你的镜像名 deploy: placement: constraints: - "node.role==manager"若集群存在多个Manager节点,调度器会自动将服务部署到符合资源要求的可用Manager节点上,无需额外配置。
内容的提问来源于stack exchange,提问作者Federico Bellini
相关产品推荐
相关产品推荐

