Docker 1.9 发布:Swarm 和跨主机网络进入 production-ready 阶段
编者按:Docker 1.9今天正式发布,Docker Swarm 和多跨主机网络进入 production-ready 阶段,Docker Engine 提供了全新的存储卷管理系统,Docker Compose 对更多环境提供了更好的支持。所有的这些都为大规模部署生产环境下的分布式应用打下了坚实的基础。本文由灵雀云高级软件工程师刘梦馨编译,以下为译文:
容器化的思潮正在改变基础设施的构建,你需要用最好的工具来完成这个目标。通过 Docker Swarm 你可以将整个集群当做一个资源池来对待去运行分布式应用,但是所有这些组成应用的容器你还需要一些额外的管理。例如有些需要相互之间进行通信,有的需要数据卷进行存储。总的来说真正让容器在集群中运行管理起来是件十分复杂的事情。
好消息是我们已经帮你解决了这些问题。Docker Network 允许你基于多个主机创建一个虚拟网络,这样容器间就可以跨网络进行通信。Docker 中最新的存储卷管理系统可以让容器在任何机器上都能持久化数据存储。在此之上你可以用 Compose 来操纵这一切。
跨主机网络
Networking 在六月份的 DockerCon 上宣布作为实验版本的一部分现在正式进入稳定版分支,并且已经 production ready。
Networking 允许你基于多个主机创建一个虚拟网络,这样容器间就可以跨网络进行通信。容器不管在哪里都可以添加到这个虚拟网络中,虚拟网络中提供了完整的网络拓扑控制,你可以控制哪些容器之间可以进行通信。除此之外你也可以利用其它插件来进行网络控制,使得你无须修改之前的应用。
网络方面更详细的内容可以参考 http://blog.docker.com/2015/11 ... ng-ga ,我们也会针对 networking 举办一次线上的 meetup,你将会从负责这块的工程师那里获得更多信息。
release not 网络那里最后新增了一条
将容器 NetworkSettings API v1.21 中的 EndpointID, Gateway, GlobalIPv6Address, GlobalIPv6PrefixLen, IPAddress, IPPrefixLen, IPv6Gateway 和 MacAddress 标记为 DEPRECATE。这些现在为 bridge 网络的特定配置。可以通过 NetworkSettings.Networks 来查看每个容器网络的网络配置
持久化存储
你们一遍又一遍的向我们吐槽 Docker 持久化存储在分布式系统的难用, Docker 1.8 加入了存储卷插件可以用任何第三方存储系统来备份存储卷,
我们现在做的又要好了一点。Docker 1.9 包含一个重新设计的完整存储卷管理系统使得你可以更加容易的从前端来管理这些插件。而且它已经和 Swarm 集成,你可以在整个集群中管理你的存储卷。
下面是一个和 Flocker 插件集成的示例:
$ docker volume create -d flocker --name=myvolume
$ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt"
$ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
现在还支持 Blockbridge, Ceph, ClusterHQ, EMC 和 Portworx 插件,更多相关信息可以参考存储卷文档和存储卷插件文档。
Docker Swarm 1.0
Docker Swarm 是 Docker 原生的集群管理系统。在本版本中我们进行了大量的测试,修复了 Bug 并进行了很大程度的优化。随着网络和存储卷管理在这个版本的发布,我们终于可以说 Swarm 已经 production-ready。我们在 1000 个节点上测试了 30000 个容器,swarm 可以如丝般润滑的运行。
Docker Engine 1.9
除了网络和存储卷管理之外,1.9 还提供了大量新特性:
- Dockerfile 的构建时参数 :现在可以在 Dockerfile 中传入构建时参数来自定义该如何构建这个镜像。例如你可能想设置构建时的 HTTP_PROXY,自定义依赖安装的版本等等。
- 并行镜像 pull :如果你 pull 的镜像正在被其他进程 pull,进度条会显示这个信息并正确退出。(不会卡死在烦人的“Layer already being pulled by another client”)
- 自定义 stop 信号 :Dockerfile 指令中新增 STOPSIGNAL 允许用户自定义应用在收到 docker stop 所收到的信号。
- AWS CloudWatch logging driver : 如果你在 AWS 上运行 Docker,现在你可以将 Docker 的日志直接输出到 CloudWatch 中。
- 磁盘 I/O metrics :docker stats 现在可以直接展示磁盘 I/O metrics
在发布日志中你可以获得完整的更新列表,感谢所贡献者尤其是 Madhav Puri 贡献了构建时参数, Darren Shepard, Patrick Hemmer 和 Harald Albers 做了大量的测试和 review 使得这个版本能顺利发布。
Docker Compose 1.5
Docker Compose 是一个定义并运行多容器应用的工具,我们来看一下它有那些更新:
- 支持 Windows : Compose 现在可以在安装 Docker Toolbox 的机器上运行。这可以容你在 Mac 上进行开发,在 Windows 上运行,反之亦然。
- Compose 文件中的环境变量 :现在你可以在 Compose 文件中利用环境变量配置任何运行时参数。
- 对多环境更好的支持 : 你可以指定一个 base file 来描述应用的结构并重载这个文件这对开发、测试、生产环境做一些修改。可以参考 http://docs.docker.com/compose ... files 获得更多信息。
- 和 networking 集成 :Docker 的新网络功能已经发布,所以你可以利用 Compose 在 Swarm 中部署一个跨主机的应用。
- Compose file 校验 :Compose 会对你的 Compose file 进行完整的校验,并输出更好的错误信息。
可以在发布日志中获得更完整的更新列表。
Docker Toolbox
如果你想在 Mac 或者 Windows 上使用这些新特性,那么就要用到 Docker Toolbox 了。它包含了所有这些最新的特性,并且只需要一个安装包就可以搞定。
他还包含了 Machine 0.5,一个在你的桌面机和云服务商那里创建 Docker Engine 的工具。Machine 现在提供了可插拔的插件,因此如果 Machine 不支持某个云服务商或者虚拟化服务商,而你又需要在他们之上运行 Docker,你可以编写自己的驱动插件。
本版本还包含了一些列新的特性和 bug 修复,现在 Toolbox 已经提供下载了。
Docker Registry 2.2
下面是最新版本的特性更新:
- 支持 Google Cloud Storage :现在你可以在 Google 建立自己的 Registry 了。
- 只读模式 :如果你需要对 Registry 进行维护或者做一些比较危险的操作任务,你可以将 Registry 设置为只读魔术来阻止用户 push 镜像。
- 支持可配置主机名 :现在你可以为 Registry 配置一个外部可访问的 URL。
- 基于文件的存在配置和可配置的 HTTP 健康检查 :现在管理员可以通过在文件系统中增加一个文件来停用 Registry。并且 Registry 现在可以配置对其他服务的健康检查,例如对 notification 接入点的 HTTP 健康检查。
- 可配置的 HTTP 响应 headers :现在你可以对 Registry 的响应 header 进行配置,这可以更好的保证安全性,并根据你的环境进行自定义配置。
可以在发布日志中获得完整的更新列表,今天就可以试用新版本的 Registry 了。
原文链接: Announcing Docker 1.9: Production-ready Swarm and Multi-host Networking