写点什么

Baruch Sadogursky 谈 Docker 容器生命周期管理面临的挑战

  • 2016-07-03
  • 本文字数:1745 字

    阅读完需:约 6 分钟

JFrog 开发大使 Baruch Sadogursky 在多个会议上做过演讲,包括去年 5 月举行的 DevOps Days Kiel
内容涉及控制和跟踪 Docker 镜像从开发环境到生产环境的流程所面临的挑战,以及 JFrog 提出的解决方案。

为了更好地了解 Docker 容器生命周期管理所面临的部分挑战,InfoQ 采访了 Sadogursky。

InfoQ:如今,您看到有许多工程团队使用 Docker 镜像作为构件,并通过部署管道推送它们吗?

Baruch Sadogursky: 我们看到,人们如今对 Docker 非常感兴趣。人们试图像使用先前的技术栈那样,借助 Docker 实现推送管道,但那并不总是有效。有些 Docker 的架构决策让做正确的事变得困难,而部分 Docker 的最大优势却让人容易做错。

InfoQ:那些使用 Docker 的人,他们是真正地将镜像部署到生产环境,还是只是使用它们作为复制实际的 VM 生产实例的一种快速而简单的方式?

Sadogursky: 真正在生产环境中使用 Docker 的团队,比“摆弄”Docker、做概念验证或者在开发环境中使用 Docker 的团队要少得多。我们认为,其中的一个原因是,增加一个更不透明的抽象层会增加生产级工件不能有的不确定性。

InfoQ:您能简要地说明下,为什么您主张使用 Docker 镜像作为工件而不是 Dockerfiles(有依赖管理)+ 应用程序二进制文件(比如 WAR 文件)?

Sadogursky:这篇博文对整个理论进行了解释,但简单来说——如果你从 Dockerfiles 多次构建(每个环境的)镜像,那么并没有什么方法可以确保你最终获得的工件相同。那是由 Dockerfile 的性质决定的——它的大多数命令都会引入不同的依赖项,而且经常会使用一个不稳定的版本。

InfoQ:在您看来,Dockerfile 应该包含什么类型的信息,而又不应该包含什么信息?

Sadogursky: 设法锁定所有依赖项的版本,越多越好。对于有些依赖项,这可以做到,例如使用一个版本号运行 apt-get,但对于其他依赖项,这无法做到(例如基于 Ubuntu 的镜像会累积相同版本下的安全补丁),但要试一下。

InfoQ:通过部署管道推送 Docker 镜像面临什么挑战?

Sadogursky: 当前,大多数 Docker 注册中心使用的推送模式是获取镜像、重打标签并添加到新的注册中心(或库),用于管道的下一个步骤,并把它重新放回。相当愚蠢,不是吗?

InfoQ:您如何看待(Docker 及其竞争者的)Docker 注册中心的现状?它们之间主要有什么不同?

Sadogursky: 这是一个相当宽泛的问题。有一大堆指标可以用于比较注册中心。其中一个最有趣的是,管道的其他部分是否需要额外的工具。Docker 是一种容器技术,容器会包含某些东西。如果你可以在和容器镜像一样的工件库里管理这些“东西”,你就可以在创建镜像的构建和创建容器所含内容的构建之间建立可追溯的元数据。

InfoQ:如果你需要确保源代码、应用程序二进制版本和 Docker 镜像版本之间的可追溯性,那么如何才能避免依赖管理地狱?

Sadogursky:“一次构建,推送不可变二进制版本”实际上同样解决了这个问题。你运行一次依赖管理系统,这样,一旦二进制版本创建了出来,到源代码的追溯就是不变的,一直到生产环境都是如此。

InfoQ:从安全的角度讲,在确保推送到生产环境的 Docker 镜像不易受到攻击方面,您有什么建议吗?

Sadogursky: 这没有什么特别之处。你应该使用安全扫描器。务必要确保,使用的工具既能扫描 Docker 容器,又能扫描镜像内容及镜像内的工件内容,等等。它们都可以在运行时暴露出容器的安全漏洞。

InfoQ:基于 Docker 镜像的推送管道可以帮助团队实现不可变基础设施吗?为了支持那种“构建 & 清除(build & forget)”的基础设施建设方法,还需要考虑什么其他的因素吗?

Sadogursky: 基于 Docker 镜像的方法就是指不可变基础设施。尽快创建不可变镜像的思想恰恰就是不可变基础设施的方法论。一旦你有了一个很好的持续集成(CI)管道,每次源代码修改就会触发一系列的 CI 构建和推送,最终进入一组新的 Docker 容器——那就是最好的不可变基础设施。

InfoQ:像 Chef 或 Puppet 这样的配置管理工具如何纳入那种场景?

Sadogursky: 那是个价值 10 亿美元的问题。我不知道有谁现在能够回答这个问题。看可变基础设施软件在不可变基础设施领域如何自我改造是非常意思的。也许 Chef Habitat 是向那个方向迈出的第一步?等着瞧吧。

查看英文原文 Q&A with Baruch Sadogursky on the Challenges of Managing Docker Containers Lifecycle

2016-07-03 19:001449
用户头像

发布了 1008 篇内容, 共 422.8 次阅读, 收获喜欢 346 次。

关注

评论

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

HDD杭州站•ArkUI让开发更灵活

HarmonyOS开发者

HarmonyOS

centOS7.3 安装启用 iptables 记录

JavaPub

Linux centos7 iptables

开源一夏 | Java格式化日期 微秒

六月的雨在InfoQ

开源 8月月更

2022年6月互联网医疗领域月度观察

易观分析

医疗 市场

不是吧?还有人不会定位线上MySQL慢查询问题?

Java永远的神

Java MySQL 数据库 程序员 面试

sync-diff-inspector 使用实践

TiDB 社区干货传送门

6.x 实践

2000多字教你三招在Linux中找出大文件,最后一个命令简直太简单了!

wljslmz

Linux 签约计划第三季 8月月更

即刻报名|Apache Kylin X Apache DolphinScheduler:大数据底座的构建和展望

Kyligence

数字化转型 数字分析 数据调度

Apache APISIX Ingress v1.5-rc1 发布

API7.ai 技术团队

APISIX kubenetes Ingress Controller

五大理由告诉你为什么开发人员选择代码质量静态分析工具Klocwork来实现软件安全

龙智—DevSecOps解决方案

静态代码分析 代码静态分析 SAST工具 SAST

版本控制篇 | 龙智邀您共赴GOPS全球运维大会,探索大规模、敏捷、高质量、开放式的软件研发与运营之路

龙智—DevSecOps解决方案

运维 DevSecOps GOPS大会

莅临GOPS大会龙智展位,获取Forrester最新报告:《Forrester Wave™:2021年第四季度企业服务管理报告》

龙智—DevSecOps解决方案

ITSM Forrester Wave Forrester

秘乐短视频挖矿系统开发详情

开发微hkkf5566

SonarQube即将亮相第十八届GOPS全球运维大会

龙智—DevSecOps解决方案

代码安全 GOPS大会 运维、 代码质量检测工具

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

万猫学社

云原生 istio envoy kiali

后台权限系统的设计以及主流的五种权限模型详解

Java全栈架构师

Java 程序员 架构 面试 后端

有多一只“手”的机器狗出没?就在昇腾AI开发者创享日·南京站

科技热闻

Python开启虚拟环境

技术小生

8月月更 Python虚拟环境

数据治理体系演进简介

网易数帆

大数据 数据治理 元数据 数据标准

多业务模式下的交易链路探索与实践

转转技术团队

中台 状态机 FSM

官方发布·2022南京智博会定于10月份在新庄国展召开

AIOTE智博会

WindTerm:新一代开源免费的终端工具,GitHub星标6.6k+,太酷了!

沉默王二

GitHub 终端工具

没开发人员,接到开发物联网系统的活儿,干不干?

AIRIOT

低代码 物联网 低代码,项目开发

2022 CCF国际AIOps挑战赛决赛暨AIOps研讨会报名已开启

BizSeer必示科技

人工智能 阿里云 华为云 信通院

关注微信公众号,自动登陆网站

源字节1号

微信小程序

内存问题难定位,那是因为你没用ASAN

华为云开发者联盟

云计算 开发 内存

双因子与多因子身份验证有什么区别?

SEAL安全

身份验证

硅谷来信:快速行动,Facebook、Quora等成功的“神器”!

博文视点Broadview

【7.29-8.5】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

手摸手带你 在 Windows 系统中安装 Istio

万猫学社

云原生 istio windows

Baruch Sadogursky谈Docker容器生命周期管理面临的挑战_DevOps & 平台工程_Manuel Pais_InfoQ精选文章