10 月 16 日,Docker 发布了 1.3 版本。历经 45 个贡献者的多达 750 次代码提交,这次发布的版本除了进行以往发布例行的质量改善以外,还增加了不少有用的新功能,如数字签名机制、进程注入、更好的镜像创建方式以及安全选项,下面对这几个功能进行逐一介绍:
数字签名机制
在这个版本中,Docker 引擎将使用数字签名机制自动分析所有官方 Docker 镜像库(Repo)的来源和完整性。这种机制可以发现官方镜像库可能存在的入侵,从一定程度上保证镜像使用过程中的可信度。Docker 团队表示,该机制只是接下来要发布的众多新特性之一,更多的还包括镜像分发商和用户经常会用到的身份验证,PKI 管理以及镜像加密等。作为首次发布,该特性还处于继续研发的阶段,目前如果 Docker 引擎发现使用的镜像被入侵,只会抛出一个警告,而不是阻止用户继续使用该镜像。在未来的版本中,该特性将会被进一步增强,严格过滤恶意镜像。
Docker exec:进程注入
在开发基于 Docker 的应用过程中,开发者可能需要运行时查看应用。诸如 nsinit 和 nsenter 这样的工具,在过去的开发过程中,在一定程度上起到了作用,但是这些都是第三方工具,需要开发者自己去寻找、学习和管理。本次发布中,有了一个新的命令 exec,可以让开发者轻松在 Docker 容器里通过 API 和命令行工具生成进程,比如:
$ docker exec ubuntu_bash -it bash
就会在 ubuntu_bash 这个容器中运行 bash。
进一步来讲,通过提供 exec 命令,开发者就拥有了更灵活的应用开发调试助手。
Docker create:更加细化的镜像创建方式
之前开发者都是使用 run 命令来创建容器,并在其中运行应用。随着 Docker 的广泛应用,越来越多的开发者要求对容器的创建有更加细致的控制,本次发布的 create 命令就是解决这个需求的。通过 run 命令,开发者可以创建但是不去运行容器,稍后可以使用 start 和 stop 命令来控制容器的生命周期。
安全选项
可能国内很多同仁所关心的就是这个特性了,Docker 命令行工具新增加了一个参数,–security-opt,为用户设定个性化的 SELinux 和 AppArmor 标签和属性。比如,需要设置一个安全选项,让容器只能监听 Apache 端口,假设这个策略命名为 svirt_apache,那么就可以通过如下命令完成这个需求:
$ docker run --security-opt label:type:svirt_apache -i -t centos \ bash
这样做的好处就是,Docker 容器不一定要运行在支持 SELinux 的内核上,也无需用—privileged 参数运行,避免了很多安全隐患。
此外本次发布还有 Mac OS X 下的共享目录工具 boot2docker。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论