如今是时候使用Docker安装一个多节点Codenvy On-Prem和Eclipse Che了。node
Docker容器包装一块软件到一个文件系统,这里面包含一切它运行的要素:code, runtime, system tools, 以及libraries。无论运行环境如何,容器老是保证相同的运行。容器将打包和部署转化为独立单元,使软件开发团队更容易提升DevOps效率。bootstrap
Codenvy一直使用容器支持builds, runners以及 workspaces好几年了。咱们如今支持在容器内运行Codenvy。服务器
Eclipse Che是一个现代的、开放源代码的软件开发环境。它是一个经过提供结构化的工做区、项目输入、模块化扩展插件来支持Codenvy的引擎。Che能够用做桌面IDE,RESTful工做空间服务器,或做为一个建立新的工具SDK。咱们如今支持一个有标签的Docker images启动一个默认Eclipse Che。网络
容器的容器是无状态的,重复运行将清除保存在容器内数据。你能够保存你的工做区到外部容器的external volume。ide
若是你不想麻烦安装volume,还能够snapshot容器,而且保存一个新的image到本地磁盘。而后你能够启动保存的图像,它重启容器在最后保存的状态。这个过程是有状态的,但你必须等待snapshot 写和读操做完成。模块化
Codenvy On-Prem 是Codenvy的一个版本,你能够运行在本身的服务器上。也能够做为一个单节点(在一个主机上)或做为一个多节点系统运行 (服务跨集群以及分布在不一样的主机上)。对咱们来讲,简单和快速安装、升级、备份,并定制Codenvy On-Prem一直是咱们的最高目标。微服务
你如今可使用Docker安装Codenvy On-Prem多节点。
虽然这安装技术是生产测试,请阅读下面的报告,你能够熟悉一下这里面的一些特定的访问控制和使用Docker可能会遇到的风险。这个安装程序只支持Linux。工具
Codenvy On-Prem须要八个节点。有了这个安装程序,咱们在它们本身的容器启动每一个节点。八大容器都是相同的——从一个specialized CentOS 7 image的实例化。空CentOS容器启动后,咱们调用Codenvy’s bootstrap installer,依次进行,Puppet下载安装并配置Codenvy。测试
Codenvy须要每一个节点配置一个匹配字符串模式的hostname。可是为了各类容器看到对方,存在于每一个容器的/etc/hosts文件必须随着其余容器的IP地址更新。这些IP地址将在容器启动以后才会知道。因此安装程序有一些额外的逻辑启动容器,发现它们的IP地址,并执行到每一个容器,并随着其余容器的IP地址更新/etc/hosts文件。咱们执行这项工做来建立一个可发现的、链接网络的容器,验证以后,Codenvy引导安装开始。当重启已经保存的容器,咱们作一个相似的进程利用任一个新的IP地址更新每一个容器。ui
看似简单的容器。从表面上看,它们是很小的部署单位。你从一个image激活一个容器就搞定一切。容器执行一般是无状态的,每一个执行不记得以前的执行。这意味着内部状态数据,好比咱们在LDAP和MongoDB对用户的存储必须具体化。
你能够从一个用于将来运行的容器建立新的images。咱们已经嵌入中止和重启选项到安装脚本里,这会让你的容器状态做为layer写进image。在未来的版本中,咱们将支持容器编排器Docker Swarm,这将给你另一种方法具体化内部数据。
Codenvy On-Prem的Docker安装不支持单节点配置。单节点Codenvy打包很是打,并且Docker不适合在一个容器中运行数十个微服务。
Codenvy On-Prem multi-node全部的容器必须在特权模式下运行,这种模式容许容器以near-root访问进程和运行在其主机上的文件。这是必要的,有两个缘由:
1。咱们的runner nodes必须在Docker里面运行Docker容器。
2。咱们使用Puppet执行内部配置管理,它须要访问全部节点,甚至一些等底层主机如AppArmor或SELinux的文件。
特许模式在不一样的操做系统下不稳定。你能够尝试一下。
本文由赵帅龙编译整理