社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

替代 Docker 的五种容器选择

马哥Linux运维 • 4 年前 • 556 次点击  

据 2018 年统计,Docker 占据了 83% 的容器市场份额。可是就在 2017 年,这个数字还是 99%,Docker 的统治地位无疑受到了削弱。不可否认,Docker 仍然是目前最流行的容器方案,但随着容器市场的不断成熟以及多元化趋势,其他诸如 CoreOS rkt、Mesos、lxc 等容器运行时也得到了稳步增长。

本文将带你深入分析几种 Docker 的替代方案,就它们的异同、独特性以及优缺点方面展开探讨。

“数据显示,用户在生产环境中使用去 docker 化容器方案的情形,要远比想象中乐观” 2018 Sysdig 报道

CoreOS rkt

2018 年,rkt(Rocket- 火箭缩写,发音相同)占据了 12% 的容器市场份额。rkt 支持两种不同的镜像类型:Docker 和 appc。rkt 最大的优势就是可以直接兼容 kubernets,也因此被称作 rktnetes。我们只需要一个命令行,就可以在 Kubernets 中完成对 rkt 的部署:

$ kubelet --container-runtime=rkt

另外 rkt 还支持 TPM(可信平台模块),提供了非常好的安全性支持。它对应用容器也做了很多优化处理。同 Docker 相比,rkt 还是缺少一些可整合的第三方接口。但是总体来说,rkt 良好的兼容性,使它可以很容易的实现公有云迁移,并完成快速部署。

另外它对 OCI(开放容器项目)的兼容性也不够好。虽然 rkt 已经摒弃 appc,全力拥抱 OCI,可是目前仍没有最终实现。面向 CRI(容器运行时接口)的 rklet 也仍在开发中。但考虑到新东家(CoreOS 刚刚被 Red Hat 收购)的技术背景,相信这一切都会好转。

Mesos 容器引擎

2018 年,Mesos 容器引擎占据了整个容器市场份额的 4%。作为 Apache 的开源项目,Mesos 提供了非常好的性能参数。同 rkt 类似,它也支持 Docker 和 appc 两种镜像。而且参考 Docker 对 OCI 的兼容方式,Mesos 对 OCI 标准的支持也将很快发布。

在谈到 Mesos 的用户案例时,但基础设施及 DevOps 专家Ricardo Aravena认为,尽管它可以应用到不同的情形下,它最好的场景还是结合 Spark 和 Flink 等计算引擎,实现一个面向大数据处理的平台。

不足的是,Mesos 容器引擎必须通过 Mesos 框架来运行这些容器,而不能像其它容器那样可以单独运行。

LXC 容器

接下来,就是占据了最后 1% 份额的 LXC Linux 容器。其实 LXC 的出现要远早于 Docker,

它又被称作“服用了兴奋剂的 chroot”。LXC 本身也有一个非常活跃的技术社区。

LXC 容器主要由三部分组成,作为运行时的 lxc;用 go 编写的管理容器和镜像文件的守护进程 lxd;管理文件系统的 lxfuse。最开始的 lxc 只是一些容器管理工具的底层实现,lxd 则在 lxc 的基础上实现了新的图形界面和命令行工具,很好的改善了用户使用体验。

按照 Aquasec 的说法,lxd 用容器的方式仿真了一个类似虚拟机的操作体验,并避免了虚拟机额外的系统负载。而且 Windows 跟 MacOS 用户都可以访问 lxd 进程。

可惜的是,LXC 容器目前还不能同 kubernetes 进行整合,也没有实现对 OCI 标准的支持,当然我们希望正在开发的 lxcrun 可以解决这些问题。

OpenVZ

OpenVZ 作为 Linux 内核的一个功能扩展,在 2005 年发布了第一版。它是一个基于容器虚拟化的开源解决方案,允许在单操作系统上运行多虚拟环境或多虚拟专用服务器。因为所有虚拟容器共享了主机系统内核,这使得 OpenVZ 具有非常少的内存消耗。

因为 OpenVZ 操作系统级容器化的定位,它不太适合运行单一程序的场景。而且它也没有提供主流的 CRI 支持或 Kubernetes 整合。甚至有传言说 OpenVZ7 的稳定性也没有 OpenVZ6 好。

Containerd

Containerd 是一个符合工业标准的容器运行时,注重简洁、健壮性以及可移植性。它目前是 CNCF(云原生计算基金会)的孵化项目。Containerd 可以以守护进程的方式在 Linux 和 Windows 上运行。

Containerd 支持 OCI 镜像文件,与 gRPC 天然嵌合,而且具有完善的容器生命周期管理功能。更多内容可参阅官方文档。

一些其他的容器运行时:

  • Windows Server 容器。

  • Linux VServer。

  • Hyper-V 容器。

  • Unikernels(单一地址空间内核)。

  • Java 容器。

结语

毋庸置疑,Docker 仍然是目前最流行的容器,而且它还将流行很长一段时间。但是正如上文所分析的那样,在某些特殊的应用场景下,Docker 的优越性将不再那么明显。而且如果这些去 docker 化容器得到发展的话,将不可避免地波及整个 Docker 生态系统。

重点评估:Docker 仍然是王者,但是我们已经预见到其衰退的迹象 -2018 Sysdig 报道

OCI 标准的提出,让我们看到了容器技术标准化的进化趋势。在如何选择合适的容器工具这个问题上,我们程序员应该首先考虑 OCI 的兼容性实现,当然还包括可移植性、社区活跃度以及在实际生产环境中得以应用的数量(毕竟实践是检验真理的唯一标准)。

来源:
https://cloud.tencent.com/developer/article/1422822

☆ END ☆


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62677
 
556 次点击