从持续集成到持续交付——Docker Cloud概览

简介: 本文讲的是从持续集成到持续交付——Docker Cloud概览【编者的话】本文介绍了Docker Cloud的概况,以及如何使用Docker Cloud改进我们的持续集成和持续发布的流程。也指出了目前Docker Cloud还存在的功能方面的问题。

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

本文讲的是从持续集成到持续交付——Docker Cloud概览【编者的话】本文介绍了Docker Cloud的概况,以及如何使用Docker Cloud改进我们的持续集成和持续发布的流程。也指出了目前Docker Cloud还存在的功能方面的问题。

容器化(Docker容器),持续集成(CI),持续部署或持续交付(CD)是简化DevOps工作的终极方案。这展示了一个未来的场景:当代码被提交到代码库之后,所有的后续工作包括编译、配置、交付和部署,甚至是高可用性都是完全标准化和自动化的。从这个角度我们可以看到一个美好的未来,将开发人员和运维人员从繁复的工作中解放出来,节省出来的人力资源可以更专注在更加创造性的开发工作。

官方的Docker镜像仓库和CI服务

从Docker的第一版本发布以来,这个公司持续行进在一个正确的方向上前进,虽然前进的有点慢。尽管如此,在Docker收购Tutum一年之后,Docker最终发布了正式的云服务Docker Cloud(cloud.docker.com)。现在围绕Docker的生态系统已经接近完备了。

在深入到Docker Cloud的技术细节之前,让我们看一下Docker的镜像仓库和自动构建服务——Docker Hub(hub.docker.com)。作为我使用了将近一年的CI工具,我觉得它还是非常好用的。它的工作方式也是很简单的,你只需要写好一个Dockefile并把它放在GitHub或者Bitbucket上,Docker Hub就会在每次代码提交之后自动构建Docker镜像并将其放置到Docker Hub镜像仓库上提供下载。
01.png

例如, https://hub.docker.com/r/tomasen/frontd/builds/  就是这样一个在Docker Hub上自动构建的Docker镜像。我可以指定镜像的分支并分配不同的标签。这个流程有助于区分版本,使其更适用于开发或者生产环境。
02.png

当然,这个构建过程会在每次代码提交时被执行。

Docker Cloud!

2016年3月,Docker发布了Docker Cloud的第一个版本。现在,在Docker Cloud上,我们可以添加我们数据中心或者AWS中的服务器添加到Docker Cloud中让Docker Cloud来控制它。因此无论是AWS或者Google或者Linode的虚机,甚至是裸机都可以通过一个简单的shell脚本命令将其添加到Docker Cloud中,这个shell脚本会在服务器中安装一个代理程序并将服务器转给Docker Cloud。
03.png

Docker Cloud跟传统的云服务提供商的主要区别是Docker Cloud本身不提供任何的服务器或者虚机,只是提供某种服务器/服务的管理系统。因此Docker公司可以通过提供持续部署的方案来产生利润。

将服务器添加到Docker Cloud的命令是非常简单的,如下所示:
curl -Ls https://get.cloud.docker.com/ | sudo -H sh -s <token>

这个脚本安装和配置Docker守护进程并设置这个节点到Docker Cloud的通信隧道,因此Docker Cloud就可以管理这个节点上的服务了。

当这些节点配置完成后,我们就可以添加服务了,这意味着我们可以利用策略来部署Docker镜像到节点上运行。

如果Docker镜像是来自我们前面提到的Docker Hub,整个设置过程就会非常容易了。
04.png

从用户界面上,我们可以设置部署策略是到所有节点,到最空闲的节点或者高可用。 

除了最基本的端口发布、网络和存储配置功能外,Docker Cloud提供了高级的概念例如Stack和服务关联,这使得平台越来越成熟和完备。

未完待续

Docker Cloud依然还有一些问题可以被修复,以使得其持续交付服务能变得完美:
  • 缺少服务监控,或者测试驱动部署策略。
  • 缺少对持久存储的管理。
  • 在每个Docker Cloud节点上都需要安装高权限的代理程序,在企业环境中将会造成严重的安全问题。

未来

每次我都在思考彻底摆脱命令行终端和ssh,只需要简单的将代码提交到某个分支,然后服务就会被部署到合适的服务器上去。在任何时候都会有一个进程去去监控并在合适的时候重新部署或者弹性扩展。这样将会极大的提高迭代的速度和效率,还有一个好处是我们将无需再担心运维人员可能会犯的错误。想到这里,我是非常兴奋的。

原文链接:From CI to CD, Docker Cloud Tour (翻译:李光成)

原文发布时间为:2016-09-13

本文作者:李光成

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:从持续集成到持续交付——Docker Cloud概览

相关文章
|
4天前
|
监控 Kubernetes 测试技术
现代软件开发中的持续集成与持续交付
传统软件开发中,集成和交付往往是耗时且容易出错的环节,而现代软件开发则借助持续集成与持续交付技术,通过自动化流程和持续部署,极大地提高了开发效率和软件质量。本文将探讨持续集成与持续交付在现代软件开发中的重要性、原理和实践方法。
|
4天前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
4天前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
162 2
|
3天前
|
Java 数据库连接 Spring
K8S+Docker理论与实践深度集成java面试jvm原理
K8S+Docker理论与实践深度集成java面试jvm原理
|
4天前
|
存储 jenkins 测试技术
现代软件开发中的持续集成与持续交付
传统的软件开发模式已经无法满足当今快节奏的市场需求。本文将探讨现代软件开发中的持续集成(CI)与持续交付(CD)的重要性,并介绍了一些实践方法和工具,帮助开发团队实现高效的软件交付流程。
|
4天前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
4天前
|
存储 安全 开发者
【Docker 专栏】Docker 与云存储服务的集成
【5月更文挑战第9天】在数字化时代,Docker和云存储服务的结合为企业和开发者提供了强大工具。Docker的高效性、可移植性和隔离性,加上云存储的扩展性、高可靠性和高可用性,通过集成可以实现数据持久化、便捷部署和资源优化。常见的集成包括AWS S3、Azure Blob Storage和Google Cloud Storage。集成时需注意安全、性能和兼容性问题,未来集成将更加紧密和智能化,助力企业创造更大价值。
【Docker 专栏】Docker 与云存储服务的集成
|
4天前
|
存储 测试技术 持续交付
【Docker 专栏】Docker 与 CI/CD 的集成策略
【5月更文挑战第8天】本文探讨了Docker在CI/CD流程中的作用,强调了环境一致性、快速部署和资源隔离等优势。通过在构建、测试和部署阶段集成Docker,可以提升软件开发效率和质量。具体集成策略包括使用Dockerfile构建镜像、整合CI/CD工具如Jenkins和GitLab。集成带来的好处包括提高效率、增强可靠性、加速交付和简化管理。然而,也需应对镜像管理、网络配置和安全等问题。通过案例分析,证明了Docker与CI/CD集成的有效性和必要性。
【Docker 专栏】Docker 与 CI/CD 的集成策略
|
4天前
|
安全 Java Docker
|
4天前
|
运维 监控 测试技术
【专栏】自动化测试、持续集成(CI)和持续交付(CD)如何提升软件开发效率
【4月更文挑战第27天】本文探讨了自动化测试、持续集成(CI)和持续交付(CD)如何提升软件开发效率。自动化测试通过特定工具和框架确保软件质量,缩短开发周期,包括单元测试、集成测试等类型,并使用Selenium等框架。持续集成在合并代码前进行自动化测试,保证代码质量,促进团队协作,使用Jenkins等工具。持续交付则实现快速迭代,自动化部署过程,降低部署风险,提高软件质量和运维效率。这三者结合助力企业在竞争中胜出。
http://www.vxiaotou.com