文章插图
在本次练习中,你将体验到 Docker 的容器编排功能 。首先你需要在单个主机上部署一个简单的应用程序,并了解其工作机制 。然后,通过配置 Docker Swarm 模式,你将学习到怎样在多个主机上部署相同的简单应用程序 。最后,你将看到如何对应用的规模进行扩容、缩容,以及如何将工作负载在不同的主机之间转移 。
(译者注:登录原网站可使用在线练习资源)
难度:入门级时间:约 30 分钟任务:
- [第一节 - 容器编排是什么](# 第一节:容器编排是什么 "第一节 - 容器编排是什么")
- [第二节 - 配置 Docker Swarm 模式](# 第二节:配置 -Docker-Swarm- 模式 "第二节 - 配置 Docker Swarm 模式")
- [第三节 - 跨多主机部署应用](# 第三节:跨多主机部署应用 "第三节 - 跨多主机部署应用")
- [第四节 - 应用扩容缩容](# 第四节:应用扩容缩容 "第四节 - 应用扩容缩容")
- [第五节 - 排空节点并重新调度容器](# 第五节:排空节点并重新调度容器 "第五节 - 排空节点并重新调度容器")
- [清理工作](# 清理工作 "清理工作")
在没有容器编排技术的情况下,部署应用程序通常非常耗时且容易出错,因为你必须手动 SSH 到每台计算机,启动应用程序,然后不断监视以确保程序按预期运行 。
但有了编排工具之后,你通常可以摆脱大部分人力劳动,让自动化完成繁重的工作 。Docker Swarm 容器编排有一个很酷的功能是,你只需一个命令即可在多个主机上部署应用程序(前提是启用了 Swarm 模式) 。另外,如果 Docker Swarm 中的其中一个节点停止了运行,其他节点将自动接过负载,你的应用程序将继续运作如常 。
如果你通常只使用 docker run 来部署应用程序,那么使用 Docker Compose 或 Docker Swarm 模式或二者兼用将很有可能是你受益不浅 。
第二节:配置 Docker Swarm 模式如前所述,实际应用程序通常部署在多个主机上 。这可以提高应用程序性能和可用性,并允许各个组件独立扩展 。Docker 拥有强大的原生工具来帮助你实现这一目标 。
手动在单个主机上运行程序的一个例子,是在node1上运行 docker run -dt Ubuntu sleep infinity,来创建一个新的容器 。
docker run -dt Ubuntu sleep infinityUnable to find image 'ubuntu:latest' locallylatest: Pulling from library/ubuntud54efb8db41d: Pull completef8b845f45a87: Pull completee8db7bf7c39f: Pull complete9654c40e9079: Pull complete6d9ef359eaaa: Pull completeDigest: sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535Status: Downloaded newer image for Ubuntu:latest846af8479944d406843c90a39cba68373c619d1feaa932719260a5f5afddbf71此命令将基于 ubuntu:latest 镜像创建一个新容器,并将运行 sleep 命令以使容器在后台运行 。您可以通过在 node1 上运行 docker ps 来验证我们的示例容器已启动 。
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES044bea1c2277 Ubuntu "sleep infinity" 2 seconds ago Up 1 second distracted_mayer但是,这只是在一个节点上 。如果此节点出现故障会怎样?好吧,我们的应用程序会被终止,它永远不会重新启动 。要恢复服务,我们必须手动登录此计算机,折腾一番才能使其恢复运行 。因此,如果我们有某种类型的系统允许我们在许多机器上运行这个“睡眠”应用程序 / 服务,那将会很有帮助 。
在本节中,你将练习配置 Swarm 模式 。这是一种新的可选模式,其中多个 Docker 主机形成一个称为群组的自编排引擎 。Swarm 模式支持新功能,如服务和捆绑,可帮助你跨多个 Docker 主机部署和管理多容器应用程序 。
你需要完成以下几步:
- 配置 Swarm 模式
- 运行应用程序
- 对应用规模进行伸缩
- 出于维护需要,排空(drain)一个节点,并重新调度节点上的容器
推荐阅读
- docker的四种网络模式
- 体验docker容器的健康检查功能
- Java应用在docker环境配置容器健康检查
- 基于Docker的MySQL主从复制搭建及原理
- 农科院研究员指导 泡茶定要选对容器
- 详解Docker可视化管理工具shipyard--部署教程及功能展示
- docker swarm快速部署
- 使用 Docker 让部署 Django 项目更加轻松
- 修改docker容器中的hosts文件
- Mac平台下配置Docker镜像加速器