New Relic 开源了其在内部生产环境中使用的 Docker 部署工具 Centurion 。Centurion 可以从 Docker registry 中构建容器,并用正确的环境变量、主机容量映射、端口映射将他们运行在一组主机上,另外 Centurion 还支持滚动部署。
New Relic 的项目经理 Karl Matthias 在 DockerCon 上宣布基于 MIT 许可开源 Centurion。Centurion 项目以 Ruby gem 的方式组织,并使用 Rake 任务语法内建的 DSL 读取配置文件,不过很快它就会支持从 etcd 中读取配置。Centurion 的 DSL 包括定义要部署的镜像、要部署的 Docker 服务器、环境变量、容器容量以及端口的相关指令,同时它还支持定义多个环境,比如模拟环境、生产环境。
用于分布式容器环境的 Centurion 包含多个命令:
- 滚动部署到一组 Docker 服务器
rolling_deploy
:一次启动或停止一个容器以确保应用的负载均衡。部署时,每个容器都会进行健康检查以保证应用正确启动。默认情况下,它会向应用的根路径发送一个 GET 请求,并期望应用能返回一个 200 范围内(译者注:2XX 都算成功)的有效响应状态码。 - 部署到一组 Docker 服务器
deploy
:硬停机,然后在指定的主机上启动容器。对于那些在任何时段都要可用的应用来说,不推荐使用。 - 在主机上部署一个 Bash 控制台
deploy_console
:在容器中已存在的环境下启动一个命令行 shell。Dockerfile 中的 CMD 指令被替换为 /bin/bash ,使用主机列表中第一个主机。 - 列出特定项目的服务器的所有标签
list:running_container_tags
:列出目前所有的标签以及标签下运行的机器。同样地列出所有主机的唯一标签列表,当部署出现问题时,这一列表对确认部署的状态很有帮助。 - 列出运行当前项目的所有容器
list:running_containers
:返回配置中每个 Docker 服务器上运行项目的所有容器的列表。 - 列出 registry 镜像
list
:返回项目的 registry 上所有的镜像。
该项目正在添加一些新的功能,比如为配置和服务发现集成 etcd 、证书验证以及服务器池的动态主机分配。
评论