【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

【3.17-3.24】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

操作系统跻身国家战略,中国操作系统开源社区走向何方?

OpenCloudOS

Linux 操作系统 DPU 大禹智芯 opencloudOS

来2023全球边缘计算大会与EMQ探讨云边协同落地实践

EMQ映云科技

物联网 IoT 边缘计算 emq 企业号 3 月 PK 榜

面试官:说说什么是单点登录?什么是SSO?什么是CAS?

Java你猿哥

Java ssm CAS SSO

浅谈 Java线程状态转换及控制

Java你猿哥

Java 后端 多线程 ssm Java工程师

面试官:kafka分布式消息系统,你真的了解吗?

做梦都在改BUG

Java kafka 消息队列 消息系统 消息中间件

OpenAI 发布ChatGPT 插件支持,官方文档译文

B Impact

保姆级教程!玩转 ChunJun 详细指南

袋鼠云数栈

大数据 开源

linux环境arm64架构编译iotDB

小黄鱼

Thrift IoTDB arm64

GtiHub上点赞已破百万!阿里内部并发编程四套全彩手册开源

架构师之道

Java 程序员 面试

火山引擎基于 Dragonfly 加速实践

SOFAStack

开源 开发者 开发

什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?

API7.ai 技术团队

lua api 网关 APISIX API Gateway

活动回顾|龙蜥社区云原生 SIG 首届 MeetUp 圆满落幕 持续打造面向云时代的竞争力

OpenAnolis小助手

开源 云原生 Meetup 龙蜥社区 sig

这5个有趣、强大的AIGC,你值得拥有

没有用户名丶

2023年中国品牌全域智能营销白皮书

易观分析

营销 品牌

硬核!最全“Java面试宝典+Java核心知识集”,一箭双雕杠春招

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

阿里面试:100个高频Spring面试题,助你一臂之力

Java你猿哥

Java spring 面试 Spring Boot 面经

QPSK/DQPSK 调制解调系统仿真

timerring

通信系统仿真

江苏银行与易观千帆达成合作,打造金融服务“新样本”

易观分析

金融 银行 经济

大模型时代的异构计算平台

百度Geek说

人工智能 深度学习 AI 企业号 3 月 PK 榜

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

面试官:给你一段SQL,你会如何优化?

做梦都在改BUG

Java MySQL 数据库 sql 性能优化

视频回放编辑工具:Mitti 激活版

真大的脸盆

Mac 视频处理 Mac 软件 视频编辑 视频回放工具

MobPush Android 厂商通道回执配置指南

MobTech袤博科技

JVM超神之路:金三银四跳槽需要的JVM知识点,都给你整理好了

Java你猿哥

Java 面试 JVM 面经 Java工程师

周杰伦在唱什么?数据可视化告诉你!

博文视点Broadview

来啦!OceanBase DevCon • 2023议程公布!

OceanBase 数据库

数据库 oceanbase

MQTT安全专题01|构建可靠的物联网系统

EMQ映云科技

物联网 IoT mqtt 物联网安全 企业号 3 月 PK 榜

ChatGPT 出现严重技术漏洞,“当红炸子鸡”翻车了?

这我可不懂

低代码 openai ChatGPT JNPF

Visio 绘图注释工具:VSDX Annotator 激活版

真大的脸盆

Mac Mac 软件 注释工具

pd虚拟机专用windows系统镜像(m1/intel)

魔仙苹果mac堡

pd 18 pd虚拟机 Win11系统下载

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