在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、简介Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行编排管理。 Docker stack 也是一个yaml文件,和一份docker-compose.yml文件差不多,指令也基本一致。但是与compose相比其不支持build、links和network_mode。Docker stack有一个新的指令deploy。 注:stack不支持的指令
二、DeployDeploy是用来指定swarm服务部署和运行时的相关配置,并且只有使用docker stack deploy 部署swarm集群时才会生效。如果使用docker-compose up 或者docker-compose run时,该选项会被忽略。要使用deploy选项,compose-file中version版本要在3或3+。 version: '3' services: redis: image: redis:alpine deploy: replicas: 6 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure (1)ENDPOINT_MODE 指定swarm服务发现的模式
DNS轮询(DNSRR)服务发现不使用单个虚拟IP。 Docker为服务设置DNS条目,使得服务名称的DNS查询返回一个IP地址列表,并且客户端直接连接到其中的一个。如果您想使用自己的负载平衡器,或者混合Windows和Linux应用程序,则DNS轮询功能非常有用。 注:version 3.3+ version: "3.3" services: wordpress: image: wordpress ports: - 8080:80 networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: vip mysql: image: mysql volumes: - db-data:/var/lib/mysql/data networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: dnsrr volumes: db-data: networks: overlay: (2)LABELS 指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置 version: "3" services: web: image: web deploy: labels: com.example.description: "This label will appear on the web service" 要改为在容器上设置标签,请在deploy之外使用标签键 version: "3" services: web: image: web labels: com.example.description: "This label will appear on all containers for the web service" (3)MODE 全局(每个群集节点只有一个容器)或副本(指定容器的数量)。默认值被副本。 version: '3' services: worker: image: dockersamples/examplevotingapp_worker deploy: mode: global (4)PLACEMENT 指定约束和偏好设置 version: '3' services: db: image: postgres deploy: placement: constraints: - node.role == manager - engine.labels.operatingsystem == ubuntu 14.04 preferences: - spread: node.labels.zone (5)REPLICAS 如果服务是副本模式(默认模式),可以指定该服务运行的容器数量。 version: '3' services: worker: image: dockersamples/examplevotingapp_worker networks: - frontend - backend deploy: mode: replicated replicas: 6 (6)RESOURCES 资源限制配置 version: '3' services: redis: image: redis:alpine deploy: resources: limits: cpus: '0.50' memory: 50M reservations: cpus: '0.25' memory: 20M 在下例中,redis服务限制使用不超过50M的内存和0.50(50%)的可用处理时间(CPU),并且拥有20M的内存和0.25个CPU时间(总是可用)。 (7)RESTART_POLICY 配置在容器退出时是否并如何重启容器。取代restart指令。
version: "3" services: redis: image: redis:alpine deploy: restart_policy: condition: on-failure delay: 5s max_attempts: 3 window: 120s (8)UPDATE_CONFIG 配置服务如何升级
version: '3.4' services: vote: image: dockersamples/examplevotingapp_vote:before depends_on: - redis deploy: replicas: 2 update_config: parallelism: 2 delay: 10s order: stop-first (9)depends_on 表示服务之间的依赖关系 version: '3' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres (10)dns 自定义DNS服务器。可以是单个值或列表。 dns: 8.8.8.8 dns: - 8.8.8.8 - 9.9.9.9 (11)dns_search dns_search: example.com dns_search: - dc1.example.com - dc2.example.com (12)environment 添加环境变量。您可以使用数组或字典。任何布尔值;真/假,是/否,需要用引号括起来以确保它们不被YML解析器转换为True或False。 environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET: environment: - RACK_ENV=development - SHOW=true - SESSION_SECRET (13)expose 开放容器的端口而不用在主机上暴露端口,它们只能被相关联的服务获取。只能指定内部端口。 expose: - "3000" - "8000" 以上就是Docker Swarm 服务编排之命令的详细内容,更多关于Docker Swarm 服务编排的资料请关注极客世界其它相关文章! |
请发表评论