热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从持续集成到持续交付——DockerCloud概览

从,持续,集成,到,持续,交付,docke
本文讲的是从持续集成到持续交付——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  

这个脚本安装和配置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概览


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • Docker下Prometheus和Grafana三部曲之一:极速体验
    开源监控工具Prometheus目前广为使用,配合Grafana即可直观展现监控数据,但对于初学者来说搭建这样一个系统要花费些时间,或者有 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 周末,受微软公司的邀请,参加微软主持的云容器培训会议,为参加培训的学院提供技术辅导,引导学员体验微软云端的DevOps实践。说是辅导,实际上自己也学到了许多的内容,包括K8S集群、负载、Azure中 ... [详细]
  • 开发笔记:DevOps Gitlab环境部署
    本文由编程笔记#小编为大家整理,主要介绍了DevOpsGitlab环境部署相关的知识,希望对你有一定的参考价值。DevOps介绍 ... [详细]
author-avatar
手机用户2602932547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有