跳转到主要内容

Docker的友好封装

项目描述

Redock是围绕Docker(Linux容器引擎)的友好封装,Docker实现了一种轻量级的虚拟化形式,使得启动和停止“虚拟机”可以在不到一秒内完成。在Docker之前,虚拟化的使用意味着带有所有相关冗余的常规虚拟机。Docker使得启动/保存/终止容器变得非常便宜和快速。这为DevOps开辟了令人兴奋的新可能性。

  • 复杂的构建环境可以被分割成隔离的容器,每个容器只关注单个项目的构建需求。如果一个项目的构建失控了,你只需删除容器并继续前进 :-)

  • 可以通过使用容器来托管配置管理服务器和代理来验证自动化部署系统(以及分布式系统)的正确性。

  • 老实说,Docker的速度如此之快,以至于我可以想象自己在其上构建一个完整的集群的测试套件。

最后一点是我开始研究Redock的原因。在我对Docker的最初实验中,我发现了很多锋利的边缘(既包括文档的缺乏,也包括Docker及其Python API的实现),但与此同时,我的手指都在渴望将Docker封装在一个易于使用且人性化的包装中,以尝试释放其潜力。

Redock为您提供的是无需麻烦的Docker:当您创建一个容器时,Redock将安装、配置并启动一个SSH服务器,并打开一个到容器的交互式SSH会话。您在容器中做什么完全取决于您...

状态

Redock应被视为alpha级别的软件。到目前为止,它只被一个人(我)使用。目前它主要用于开发工作,而不是生产使用。这可能会随着时间的推移而改变,取决于我未来几周/几个月对Docker的经验(我特别关注稳定性和性能)。

顺便说一句,同样可以也应该说关于 Docker(它的网站上也说了)。在Redock的重度测试期间,我遇到了一些未处理的内核模式空指针解引用,这并没有导致主机系统崩溃,但当然也没有激发信心 ;-)。需要注意的是,这些问题并没有在常规使用中出现;只有涉及创建和销毁数十个Docker容器的重度测试才会触发这些问题。

这里我可能需要提一句免责声明:Redock会使用update-dotdee重新编写你的SSH配置(~/.ssh/config)。我已经对此进行了相当多的测试,但始终保留备份是个好主意(提示)。

我目前正在使用Ubuntu 12.04上的Redock,搭配Docker 0.6.3和Linux 3.8.0内核(如Docker在Ubuntu安装指南中建议的)。我刚刚切换到这些版本,它们似乎已经解决了我上面提到的稳定性问题(时间会证明一切 :-)。

使用方法

在使用Redock之前,您需要安装Docker,请参阅Docker的安装指南。您可能还想将您的用户账户添加到docker组,这样您就可以使用sudo连接到Docker(当我切换到Docker 0.6时,我花了很长时间才意识到这一点)。安装Docker后,可以使用以下命令安装Redock:

$ pip install redock

这个命令使用pip(Python包管理器)下载并安装Redock。由于Redock是用Python编写的,因此您需要安装Python。Redock引入了一组依赖项,如果您熟悉虚拟环境,您可能想使用一个虚拟环境 :-)。安装Docker和Redock后,以下是创建容器的步骤:

$ redock start test

如果您以交互方式运行此命令并启动单个容器,Redock将启动一个交互式SSH会话,连接到该容器。在任何情况下,您现在都可以使用容器的名称加上-container后缀通过SSH连接到容器。

$ ssh test-container

这是因为您的~/.ssh/config已经被更新,以包含容器的宿主定义。这意味着您可以使用rsync或其他任何在SSH之上工作的工具连接(例如,用于引导配置管理系统)。当您完成对容器的操作后,可以使用以下命令保存您的更改:

$ redock commit test

此命令将容器文件系统的状态持久化到Docker镜像中。下次您使用相同的名称运行Redock时,它将基于现有的磁盘镜像创建一个容器。要终止并删除正在运行的容器,请使用以下命令:

$ redock kill test

这将丢弃自上次使用redock commit以来对容器内部文件系统所做的所有更改。与容器关联的Docker镜像可以按如下方式删除:

$ redock delete test

命名约定

在上面的示例中使用了名称test。这个名称由Redock用来标识运行的容器(使用redock start创建)和任何相关的镜像(使用redock commit创建)。通过使用多个名称,您可以并行运行多个容器,并且可以暂停/恢复“长期”容器。

Redock接受的名称应为形式为repository:tag(由冒号分隔的两个单词)。

  1. 第一部分(示例中的repository)是Docker镜像的顶级名称空间。例如,有一个名为ubuntu的存储库,其中包含官方的基础镜像。同样,Redock在第一次运行时使用redock存储库来创建其基础镜像。

  2. 第二部分(示例中的tag)是特定容器和/或镜像的名称;我通常将其设置为将运行在容器内的系统的主机名。

如果缺少冒号,则repository将被设置为您的用户名(基于环境变量$USER)。

联系方式

Redock的最新版本可在PyPIGitHub上找到。API文档托管在Read The Docs上。有关错误报告,请在GitHub上创建一个问题。如果您有任何问题,建议等,请随时通过电子邮件peter@peterodding.com联系我。

许可证

本软件根据MIT许可证授权。

© 2013 Peter Odding。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

redock-0.5.8.tar.gz (21.0 kB 查看散列

上传时间

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面