写点什么

Docker:具备一致性的自动化软件部署

  • 2013-04-11
  • 本文字数:1489 字

    阅读完需:约 5 分钟

PaaS 供应商 dotCloud 开源了自有平台上的关键组件 Docker 。Docker 是一种增加了高级 API 的 LinuX Container(LXC)技术,提供了能够独立运行 Unix 进程的轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式。

Docker 使用标准化容器的概念,能够容纳软件组件及其依赖关系——二进制文件、类库、配置文件、脚本、Virtualenv、jar 包、gem 包、原始码等——而且可以在任何支持 cgroups 的 64 位(针对 x64)Linux 内核上运行。这样的容器可以部署在笔记本、分布式基础架构、云端或是其他地方,其对环境的保留适用于广泛的用途:持续部署、Web 部署、数据库群集、SOA 等等,对此, Mike Kavis 在他的博客中这样描述

作为应用开发者,与我相关的用例是使用 Docker 以简化持续交付过程。在我职业生涯中工作过的每个地方,在那些从大型机到客户端再到云端的岁月里,让不同的环境保持同步并成功测试应用简直是个噩梦。无论我们的流程有多好或者有多糟,在“Dev-QA-Stage-Prod(开发 - 质量保证 - 过渡 - 生产)”的迁移过程中的各个阶段里,代码从来就没有处于相同的环境。最后的结果就是,发布的产品总是出现质量问题。“它在测试阶段是好的”是仅次于“支票已经寄出了”(译者注:the check is in the mail 为美国俚语,意指某件应该发生某事但实际情况却与之不符,最早是债务人用于缓和债权人的愤怒情绪的一种借口)的推脱借口。

在持续交付(CD)过程中,_ 整个环境 _ 随着代码一起在“Dev-QA-Stage-Prod”的不同阶段间迁移。配置问题,系统环境不同的问题,借口都将不复存在。在 CD 过程中,如果代码在产品阶段出问题,那么在测试阶段也一样有问题。使用 Docker 的过程中,我知道能够通过编写脚本实现 CD 流程的自动化。我还知道,因为无需处理所有的安装和配置问题,随着创建新环境的速度加快,产品进入市场的速度也得到了提升。

dotCloud 的 CEO Solomon Hykes在PyCon 上演示了Docker ,宣称它是可重复的轻量级虚拟化解决方案,因为“它在进程层面是独立的,而且拥有自己的文件系统”。其API 允许系统管理员对容器进行一系列操作:开始、停止、复制、等待、提交、关联标准流、列出文件系统变更等等。

Docker 的主要特性如下:

  • 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
  • 资源隔离:可以使用 cgroup 为每个进程容器分配不同的系统资源,例如 CPU 和内存。
  • 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和 IP 地址。
  • 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
  • 日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
  • 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
  • 交互式 Shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互 shell。

目前,Docker 已在 Ubuntu 12.04 和 12.10 测试过,但 dotCloud 表示它应该能够在内核版本号 2.6.24 或更高的 Linux 上运行。它还可以在 Windows 或 Mac OS X 中,使用 Vagrant VirtualBox 的虚拟机里安装。Docker 是用 Go 语言编写的,并使用了 Linux 的 cgroup namespacing 、支持写时复制特性的 AUFS 文件系统以及 LXC 脚本。

查看英文原文: Docker: Automated and Consistent Software Deployments


感谢康锦龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-04-11 10:3824797
用户头像

发布了 256 篇内容, 共 74.9 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

企业即时通讯怎样为企业实现移动办公效率的极致化?

BeeWorks

兆骑科创高层次人才引进服务平台,创业大赛,云路演

兆骑科创凤阁

旺链科技荣登“长三角产业区块链企业30强”!

旺链科技

区块链 产业区块链 创新应用

基础+进阶+源码+实战,阿里SpringCloud Alibaba全解手册限时开源~

Java全栈架构师

程序员 面试 微服务 架构师 SpringCloud

2022年中国小微信贷市场发展分析

易观分析

市场分析 小微信贷 易观

蛇行矩阵 蛇形填数 回形取数 蛇行系类(C语言详解+图解)

Five

c 算法题 8月月更

面试半月,阿里三面挂在微服务,我整个人直接麻了

Java永远的神

程序员 微服务 程序人生 Java 面试 架构师

MobTech ShareSDK Android端微信分享小程序

MobTech袤博科技

微信小程序 android sdk

全网独一份!清华大牛联合众多一线大厂架构师整合的Java面试突击手册开源

程序员小毕

程序员 程序人生 JVM 高并发 java面试

Gitlab 中 Github import 功能存在远程代码执行漏洞

墨菲安全

兆骑科创双创服务平台,留学生海外创新创业大赛,人才引进

兆骑科创凤阁

浅谈 malloc 函数在单片机上的应用

矜辰所致

malloc 内存管理 8月月更

万物皆可集成系列:低代码释放用友U8+深度价值(2)—数据拓展应用

葡萄城技术团队

低代码 用友

打补丁是什么意思?如何快速对云主机批量打补丁?用什么软件?

行云管家

运维 云主机 IT运维 打补丁

画出“伦勃朗光线”:vivo的夜色4K探索之旅

脑极体

大型LED显示屏怎样做好保养维护

Dylan

LED显示屏 led显示屏厂家

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

融云 RongCloud

即时通讯 协议

将 SAP Spartacus 作为 feature module 进行 Lazy Load 延迟加载时遇到的注入错误分析

汪子熙

typescript 前端开发 angular Spartacus 8月月更

KusionStack 在蚂蚁集团的探索实践 (上)

SOFAStack

开源 技术分享 蚂蚁集团 Kusion kusionstack

业务出海必答题,融云全球通信网络技术挑战破解实践

融云 RongCloud

自从外包干了七年,废了.....!

退休的汤姆

Java 面经 社招 Java工程师 秋招

IoT亿级设备接入层建设实践——实践类

阿里云AIoT

安全 网络协议 物联网 存储 网络架构

激动!开启轻量化虚拟直播时代!

IT资讯搬运工

Docker下Prometheus和Grafana三部曲之一:极速体验

程序员欣宸

Grafana Prometheus 8月月更

DPDK性能影响因素分析

C++后台开发

后台开发 虚拟化 DPDK VPP C++开发

Python自学教程3-英语不好,变量怎么命名

和牛

Python 测试 8月月更

离谱了!腾讯数据库专家耗费几个月编写了这份 604 页的 Oracle+MySQL 学习指南手册

了不起的程序猿

Java MySQL JAVA开发 java程序员

企业统一门户 | WorkPlus深度集成,优化企业管理模式

BeeWorks

MQTT协议详解及v5.0实践——实践类

阿里云AIoT

物联网 调度 网路协议 网络性能优化 网路架构

SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)

SpringBoot 2 Druid 8月月更

2022年十大知名堡垒机品牌你真的知道吗?

行云管家

网络安全 数据安全 堡垒机 堡垒机品牌

Docker:具备一致性的自动化软件部署_Linux_Abel Avram_InfoQ精选文章