摘要: 近期发布的1.13的版本中,Docker对Docker Engine内置的编排能力做了很多的更新,使用新的这些特性,我们能更好的编排和迭代我们的应用。



我们都知道在去年Docker轰动容器社区的在Docker Engine中集成了编排能力,并随着1.12的Docker版本发布,但是那个版本的编排还有很多的不足,比如:

  • 不兼容传统的Docker Compose格式,从Compose迁移到服务复杂。
  • 不支持复杂的服务发布方式和回滚等

而在近期发布的1.13的版本中,Docker对Docker Engine内置的编排能力做了很多的更新,我们下面看一下Docker Engine 1.13中内置的编排能力有哪些更新:

支持Compose/(docker stack)

Docker 1.13中将之前的Compose加入到Docker Engine中,通过docker stack命令进行管理:

  • docker stack deploy 部署一个Compose模板到Docker集群中作为一个stack,相当于之前的docker-compose up
  • docker stack ls 列出目前的所有stack
  • docker stack ps 展示一个stack中对应的容器,相当于之前的docker-compose ps
  • docker stack rm 删除一个stack以及它包含的服务和容器
  • docker stack services 展示stack下面对应的服务

有了Docker stack的命令,我们就可以方便的把以前系统的Compose模板以内置编排Service的方式部署到现在的Docker集群中。

允许Docker Service映射主机的端口

在1.12版本的Docker Engine中,那时我们如果想要暴漏服务到集群外部访问,只能映射到Swarm集群的Controll节点上,这样就导致了集群中不同服务不能映射同样的端口,在1.13的Docker版本中,允许服务只映射到主机的端口,就可以让集群不同节点上服务端口不再冲突了。可以通过docker service create --publish将服务的端口映射到节点主机的端口

增加一系列服务的回滚策略

docker service update中增加更新的控制和回滚的参数,分别是:

  • --update-max-failure-ratio 服务多少比例的容器升级失败才认为服务更新失败,通过这个参数的指定,能够保证更好的控制服务的灰度发布。
  • --update-monitor 配置服务的一个实例更新多久才认为超时失败。
  • --rollback 在服务更新失败后回滚服务的版本,通过这个参数,可以快速的响应服务更新问题及回滚版本。

通过docker service update增加的这些服务更新的控制和回滚的参数和功能,我们可以使用docker service更好的控制应用的迭代。