写点什么

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:3824832
用户头像

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

关注

评论

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

Flink SQL 在美团实时数仓中的增强与实践

Apache Flink

大数据 flink 实时计算

深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、ROUGE等详解 1.基础指

汀丶人工智能

人工智能 机器学习 深度学习 算法评价指标

局域网IP扫描软件:IP Scanner Pro激活版

真大的脸盆

Mac IP 局域网管理 IP扫描工具 局域网扫描

建木在 Rainbond 上使用实践

北京好雨科技有限公司

云原生 CI/CD #Kubernetes# rainbond 企业号 4 月 PK 榜

基于 Nginx&Lua 实现自建服务端埋点系统

亚马逊云科技 (Amazon Web Services)

Amazon

关于验证码,你不知道的一些问题!

宙哈哈

php html 记录 验证码

AI开发实践:关于停车场中车辆识别与跟踪

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 4 月 PK 榜 车辆检测

LeetCode题解:136. 只出现一次的数字,哈希表,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

autodesk maya 2023最新中文版 Maya动画和建模软件

理理

Autodesk Maya maya破解版 玛雅2023下载

Autodesk AutoCAD 2024 Mac(cad2024) v2024.3 支持M1 兼容Mac13系统

理理

mac软件下载 M1芯片 cad2024激活版 Autodesk AutoCAD

SketchUp Pro(草图大师2023)中文版 Mac/win

理理

SketchUp Pro 2023 SketchUp Pro中文版 草图大师2023下载

阿里工作10年,我总结出了这份1071页Spring全家桶核心笔记

三十而立

解决Parallels Desktop 18.2.0提示“由于临界误差,不能启动虚拟机”的问题

理理

Parallels Desktop 18 pd18虚拟机 PD虚拟机不能联网

恶意爬虫?能让恶意爬虫遁于无形的小Tips

宙哈哈

Python html nginx 爬虫

从逻辑到硬件:如何转换PCB布局?

华秋PCB

工具 电路 PCB PCB布局 PCB设计

【干货】验证码的常见类型总结

宙哈哈

php html 验证码 短信验证码

2023Java岗面试,进互联网大厂必备Java面试八股文真题解析

程序知音

Java java面试 后端技术 八股文 Java面试八股文

Excelize 入选 2022 中国开源创新大赛优秀项目

xuri

golang 开源 Go 语言 Excelize OOXML

2023年成都.NET线下技术沙龙来了!大咖分享,报名从速

MASA技术团队

.net dapr MASA

远程调试为何要亲历现场,也许也可以这样解决

石臻臻的杂货铺

远程调试

长安信托:拥抱数字信托,探索多项目管理新路径

万事ONES

Higress GitHub star 突破 1k,来自社区开发者和用户的寄语

阿里巴巴云原生

阿里云 云原生 Higress

从Spring的AOP看Synchronized锁失效和事务失效的情况

做梦都在改BUG

目前led显示屏厂家存在的问题

Dylan

制造 行业 LED显示屏

JetBrains CLion 2023中文版安装教程CLion 2023新功能

理理

C/C++ CLion 2023 JetBrains CLion破解版

基于 Flink ML 搭建的智能运维算法服务及应用

Apache Flink

大数据 flink 实时计算

Apache Paimon 在同程旅行的探索实践

Apache Flink

大数据 flink 实时计算

深入探索Go语言的unsafe包,揭秘它的黑科技和应用场景!

王中阳Go

golang 高效工作 面试题 黑科技 Go 语言

从零学习SDK(2)SDK的基本概念和组成部分

MobTech袤博科技

AntDB数据库携超融合流式实时数仓亮相第25届中国高速公路信息技术化大会

亚信AntDB数据库

AntDB AntDB数据库 企业号 4 月 PK 榜

一文快速了解火山引擎A/B测试平台

字节跳动数据平台

大数据 AB testing实战 A/B 测试 企业号 4 月 PK 榜

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