Docker有哪些新功能以及它如何影响您的代码?
Docker 1.12版本已经发布,并且在过去几周内进行了一些更新。 版本名称可能意味着此更新仅包含一些新功能,但通过发行说明可以讲述一个完全不同的故事。
在以下文章中,我们收集了最有趣的新功能,因此您将肯定知道要检查的内容。 发货了!
引入功能
每个人都在谈论Docker。 难怪,因为公司承担了运输代码的艰巨任务,并使用容器使其变得更快,更容易。 但是,如果我们不得不选择Docker能够识别的一个词,那么“功能”就可能是它。
每个Docker版本都具有大量新功能。 无论我们谈论的是版本1.12、1.11还是版本1.8,都没关系–发行说明中总是充满了改进,改进或全新的功能。
但是,并非所有这些都让每个用户都兴奋,因为Docker有各种各样的用例。 一些开发人员仅使用它来更轻松地发布代码,而其他开发人员则不在乎发布,但他们确实在乎包含应用程序和代码。
这可能会造成混乱,尤其是因为这些新功能是可选功能,而有些功能可能未被注意。 这就是为什么我们决定为您辛勤工作,并向您展示我们遇到的5大新功能。
1.编排
通过业务流程,您不必在单个主机上分别部署容器,而是可以在许多计算机上部署复杂的多容器应用程序。 曾经有时间,资源和金钱来维护分布式平台的人可以使用此选项,但是现在不再可用。
Docker 1.12增加了使多主机和多容器编排可供所有人使用或使用的功能。
您将能够在一组称为Swarm的Docker引擎上管理应用程序。 什么是群? 您很高兴地问到,这是您应该了解的下一个功能:
2.群
我们的最后一句话可能会毁了这个惊喜,但万一您错过了它:Swarm让您可以将Docker主机群集控制为单个虚拟主机。 这是一个自组织的引擎组,旨在实现可插入的后端。 曾经是一个单独的工具,现在已成为Docker本身的一部分,这使使用它变得更加容易。
这是什么意思? Swarm使用Docker API作为其前端,它使您可以使用各种工具来控制它,例如Jenkins,Shipyard等。
该组中的第一个节点将是管理器,接受命令并安排任务。 添加的其他节点将是执行其订单的工作程序,但是您可以添加其他管理程序以备不时之需。
您如何创建它? 通过以下简单的代码行:
docker swarm初始化
此功能给我们带来的一些亮点:
- 能够从单个磁盘映像构建整个Swarm并使用引擎在部署时部署管理器和辅助节点的能力
- Swarm还监视群集状态,并在计算机崩溃时分配副本
- 为您的服务指定覆盖网络,并自动为该网络上的容器分配地址
- 将服务端口公开给外部负载均衡器,并指定如何在节点之间分配服务容器
这些只是Swarm中可用的一些选项。 如果引起您的注意,则可以在此处查看完整的功能列表。
3.路由网格
顾名思义,路由网格将对可用节点上已发布端口的传入请求路由到活动容器。 实际上,即使节点上没有任何任务在运行,该功能也可以启用连接。
如果我们仔细研究一下,Routing Mesh将使每个节点能够接受Swarm中运行的任何服务在已发布端口上的连接。 因此,即使它没有部署服务,它也可以通过Swarm内所有节点上的相同端口访问服务。
除了路由请求之外,路由网格还可以在Swarm内部的所有可用服务之间平衡请求,并检测节点故障。 这将我们引向1.12中的下一个新功能:
4.健康检查
Healthcheck指令告诉Docker如何测试容器是否仍在工作,在1.12.1版中,您将找到一条新的Healthcheck Dockerfile指令来支持用户定义的健康检查。 因此,现在我们可以定义完全健康的容器对我们意味着什么,并进行相应检查。
使用此功能将使我们能够发现以前可能忽略的各种情况,例如服务器进程仍在运行,但无法处理新连接。
此功能与Swarm功能一起使用,并且如果我们的容器之一被标记为不正常,则将为我们处理问题,并且将出现副本容器。
5.服务
服务是任务列表,可让您指定群集内容器的状态。 每个任务代表一个应该运行的容器实例,而Swarm跨节点调度它们。
创建服务后,我们可以选择以下两个选项之一:复制服务或全局服务:
复制服务使您可以将任意数量的容器分布在可用主机上,而全局服务仅为Swarm中每个主机上的同一容器调度一个实例。
在后台,Docker监视群集并相应地更改它们以匹配我们所需的状态。
还值得一提
万一您错过了它,Docker在1.11版中引入的最大更新之一就是通用容器运行时RunC 。
这是一个开源的CLI工具,轻巧,可移植,并基于libcontainer构建,可为数百万个Docker Engine安装提供支持。 这意味着它已经“准备就绪”,并且包含了Docker本身用来与容器相关的系统功能进行交互的代码。
该工具提供对Linux名称空间的完全支持,以及对实时迁移的本机支持。 当然,它的目标是使标准容器在任何地方都可以使用。 您可以在生产环境中使用它,也可以在平台中将其用作Docker部署的一部分。
最后的想法
每个Docker版本都有一个功能齐全的背包供您选择。 这是该项目大肆宣传( 也许太大? )的部分原因,但同时也带来了一些负面反馈。
尽管该公司专注于新版本,但有些人可能声称它忽略了较早的错误,问题,甚至承担了诸如稳定性之类的重要任务。
顺便说一句,如果您有兴趣监视Docker中的JVM,还应该检查OverOps Docker集成。
翻译自: https://www.javacodegeeks.com/2016/09/whats-new-docker-1-12-top-5-features-know.html