前情概要

8月13日,Docker 公司更新了网站服务协议,条款申明,禁止禁运国家和被列入「美国实体清单」的组织和个人使用带有该服务协议链接的 Docker 网站和所有相关网站。这一更新协议迅速引起了业内的广泛关注与讨论,一时间有关“ Docker 被禁止使用”的讨论此起彼伏。

实际受限的产品与服务是什么?
Docker商业版受限,胖容器是个选择

Docker商业版受限,胖容器是个选择_第1张图片

Docker商业版受限,胖容器是个选择_第2张图片

结合1.1、1.2 和 2.5 条款,可以明确的是:

Docker 公司禁止被列入“美国实体清单”名单中的企业使用 docker.inc 网站提供的Docker 商业版 Docker-EE 及 Docker 其他服务,如 Docker Hub。

免费用户在使用 Docker Hub 时会在镜像数量、pull/push频次等方面受到限制,比如免费账号6个小时内限制下载200次等。虽然企业内部基本会部署自身的私有镜像仓库,但在构建或使用基础镜像时,可能仍然会受到此限制。

业内广泛使用的 Docker 开源容器引擎 Moby,因其采用了Apache License 2.0协议,并不会受到此影响,即开源版 Docker-CE 不受此影响。

预防和降低风险,胖容器是个选择

BoCloud博云作为国内率先使用容器开源技术的云计算厂商之一,对此次事件也在保持密切关注。 根据 Linux 基金会发布的“了解美国对开源项目的出口管制”,可以明确“已公开发布”并且属于“开源”的项目不受出口管制服务条款的影响。 博云容器云BeyondContainer 使用的是 Docker 开源社区版本 Docker-CE,因其为“已公开发布”并且属于“开源”的项目,因此 Docker-CE 该开源版本此次不受影响。另外,此次条款影响公有镜像仓库 Docker Hub 使用,博云的客户使用的是私有镜像仓库,也不会受到 Docker Hub 受限的影响。
虽然此次 Docker 开源版本没有受到影响与限制,但开源不等于不受管制。从长远发展角度而言,企业也需要提前考虑其他策略,来预防可能出现的进一步限制。为预防和降低风险,企业可考虑使用国内容器云厂商自行维护的容器版本,或选择同时支持多种开源容器运行时的容器云产品。 2019年底,博云发布了自主研发且自行维护的容器版本:BeyondVM胖容器(兼容传统应用,蓄力边缘云——博云胖容器解决方案)。BeyondVM胖容器提供相对完备的进程树和系统服务的容器环境,具有更好的隔离性,支持业务同时获得容器和虚拟机的运行体验,无需改变代码即可实现向容器平台的迁移,帮助客户快速容器化存量应用,快速渐进式地拥抱云原生技术。
利用 BeyondVM 胖容器技术,可以实现:
同时兼容原生容器和虚拟机的使用体验。

比虚拟机轻量的资源分配能力,以方便资源快速申请、弹性。

类似虚拟机的使用体验,可登陆,可任意安装组件。

有固定IP地址,胖容器从创建到删除,IP地址保持不变。

可以通过SSH远程登陆系统。

严格的资源隔离,如CPU、内存等。

JVM,监控类工具看到的资源不是整个物理机的资源,而是真实分配给胖容器使用的资源。

7月29日,中国信息通信研究院在 2020可信云大会上发布了国内首个云原生技术生态图景,BeyondVM 胖容器入选该图景的容器技术版块。目前,BeyondVM 胖容器已经过大规模生产应用检验,如有极限情况发生,可以在不升级版本的前提下,直接使用 BeyondVM 胖容器代替 Docker,并且能获得更好的隔离性,以及对有状态的应用提供更强的支持能力。

支持多种容器运行时,避免单一技术绑定

容器运行时作为支撑 kubernetes 节点的底层关键软件,近年来随着 kubernetes 的进一步发展,业内诞生了多种容器运行时。当前,在谈到容器运行时,就不得不提社区中的两个协议:OCI 和 CRI。这两种不同的协议,在各自领域各有不同的标准实现。

OCI 规范(Open Container Initiative 开放容器标准)聚焦于两部分内容:容器运行时标准(runtime spec)和容器镜像标准(image spec)。其中,兼容 OCI 规范的典型项目有 runc、kata 等。(BeyondVM胖容器兼容 OCI 标准,可以灵活与 Kubernetes集群进行集成。)

CRI 接口(Container runtime interface容器运行时接口),是 kubernetes 社区提出的对接多种容器运行时的标准接口,该接口分为两部分内容:一是容器运行时服务RuntimeService,负责管理pod和容器的生命周期;另一个是镜像服务ImageService,负责管理镜像的生命周期。其中,CRI 的典型实现有 docker、containerd 等。

虽然,基于 Docker 的容器运行时仍然是当前 kubernetes 的默认选择,但得益于kubernetes 提出的 CRI 接口,使得用户有了更多种的容器运行时选择。博云BeyondContainer容器云也即将提供 Docker 以外的其他多种容器运行时的支持,帮助企业用户避免单一技术绑定带来的风险。