众所周知,Docker已经发展成为全球范围内云计算的核心技术之一。作为一种流行的容器管理技术,Docker最大的优势在于它可以将应用程序与计算环境分离,允许开发者在同一台计算机上使用不同的技术。借助Docker,开发人员可以让应用程序在同一台服务器上运行Python、Ruby、PHP、NodeJS或任何其他语言,并将每个应用程序安装在具有独立数据库引擎的单独容器中。不过,8月13日生效的Docker最新服务条款引发了国内IT行业的广泛关注。该条款明确规定,Docker提供的服务禁止被美国“实体清单”上的实体使用。目前,列入贸易管制“实体清单”的中国IT企业包括:华为、商汤科技、依图科技、旷视科技、海康威视、大华股份、科大讯飞、美亚柏科、宜信科技、奇虎360、烽火科技、东方网力、数据科技、云从科技、曙光、海光等。而且,未来不排除会有更多中国IT企业被“邀请”进入这份“实体清单”。尽管“实体清单”禁令限制了Docker的商业版本和DockerHub等Docker的其他服务,但这仍然给Docker中国的前景蒙上了一层阴影。而且,有业内人士指出:Docker这家公司到目前为止,最有价值的不是Docker软件本身,而是Dockerhub。开源仍然是目前最稳妥的选择。Linux基金会不久前发布白皮书《了解开源科技和美国出口管制》,指出美国出口管制条例EAR明确豁免了大部分以开源形式呈现的软件和技术。对于国内的IT企业和网络安全企业来说,Docker的“实体清单”禁售其实已经敲响了警钟,是时候开始评估Docker的开源替代方案了。一个好的Docker替代方案Docker远不是一个完美的产品,并且有很多缺点。例如,它必须以root权限运行,停止容器将删除其中的所有信息(卷中的内容除外)。其他缺点包括:安全性和隔离性不如VM,大规模管理困难(K8s应用诞生),故障排除困难,不支持Windows。事实上,目前有很多优秀的Docker软件替代品,其中很多软件在技术成熟度、稳定性、资源利用率等方面的表现与Docker相当,甚至更好。下面,我们推荐十个优秀的Docker替代品。OpenVZOpenVZ是一种流行的基于Linux的操作系统级服务器虚拟化技术,可在单个物理服务器内创建多个安全和隔离的虚拟环境,从而提高服务器利用率和性能。虚拟服务器确保应用程序不冲突并且可以独立重启。OpenVZ还提供网络文件系统(NFS),允许从OpenVZ虚拟环境访问网络磁盘文件。该工具支持IA64处理器的检查点和实时迁移,这是其他开源操作系统虚拟化软件无法提供的功能,系统管理员可以使用虚拟服务器在物理服务器之间移动而无需最终用户干预,无需昂贵的存储系统。OpenVZ是一种开源技术,也是SWsoft的Virtuozzo虚拟化产品的基础。它为虚拟环境中的VLAN提供标准支持,允许在不同网络上标记每个网络数据包。支持FUSE(用户空间中的文件系统),例如,它可以将FTP或SSH服务器公开为虚拟环境中的文件系统。网址:https://openvz.org/系统支持:LinuxRancherRancher是一种开源的容器管理技术,提供完整的容器基础设施服务,包括网络、存储服务、主机管理和负载均衡等,支持各种基础设施,应用程序可以部署和管理简单可靠。网址:https://rancher.com支持系统:LinuxNanoboxNanobox是开发者理想的DevOps平台。Nanobox负责基础设施的所有构建、配置和管理,因此您可以专注于代码而不是配置。使用Nanobox,您可以自由地创建一个一致且独立的开发环境,该环境可以轻松地与任何人共享并在任何主机(AWS、DigitalOcean、Azure、Google等)上实施。开发人员可以跨本地计算机和云提供商一致地运行他们的应用程序。您可以使用Nanobox仪表板非常轻松地管理生产应用程序。Nanobox还支持零停机部署和扩展,通过统计仪表盘和历史日志输出监控应用的状态。网址:https://nanobox.io/系统支持:基于WebPodmanPodMan是一个可用于Linux发行版的虚拟化容器管理器。它的特殊之处在于不需要运行Daemon,而是直接在runC上运行。PodMan允许我们以没有root权限的用户身份运行容器,这从安全角度来看非常重要!使用Podman,我们不仅可以检查OCI图像,甚至无需下载它们,还可以从一个存储库中拉取元素并直接移动到另一个存储库,图像文件不需要通过我们的设备传输。我们不需要下载镜像来检查或使用它的组件。Podman还允许在默认情况下启用Systemd的情况下运行容器,而无需进行任何修改。Podman支持套接字激活,因此我们可以使用该系统配置套接字并访问远程API以与该工具进行通信。它能够通过名称空间使用UID分离,这在运行容器时提供了额外的隔离层。下载链接:https://developers.redhat.com/blog/2018/08/29/intro-to-podman/系统支持:LinuxRKTRKT属于CoreOS发行版,专为容器虚拟化和处理而开发。今天,它是Docker最大的竞争对手之一。RKT可以在ArchLinux、CoreOS、Fedora、NixOS等Linux平台上运行。CoreOS决定推出RKT的主要原因之一是安全性。在1.1版本之前,Docker需要以root用户身份运行,这是一个非常严重的漏洞,允许超级用户级别的攻击。相反,RKT允许我们使用标准组处理Linux权限,允许容器在创建为没有root权限的用户后运行。Docker的优点是易于集成,而RKT需要更多的手动安装和配置。不管怎样,它仍然是Docker的一个很好的替代品,因为它允许我们使用APPC镜像(AppContainerImages)以及Docker镜像。反过来,它还允许与Kubernetes和AWSOrchestrator集成。下载链接:https://github.com/rkt/rkt系统支持:LinuxSingularitySingularity是一个用于HPC(高性能计算)的操作系统虚拟器,因为它不需要以具有root权限的用户运行,并且由于它的隔离级别非常适合在共享空间中使用。它的安全理念是“不安全的客户端运行不安全的容器”,彻底改变了安全范式。关于Singularity的另一个重要事实是我们可以导入和使用已有的Docker镜像。我们甚至可以在本地编辑容器,然后将其挂载到共享环境中,因为它不需要root权限即可挂载。也可以使用基本的文件传输协议(如RSYNC、HTTP、SCP等)进行传输。下载链接:https://sylabs.io/singularity/系统支持:LinuxKubernetes(K8s)Kubernetes是一个开源系统,用于自动组织和管理容器化应用程序。如果您正在使用流行的开源Linux容器设计应用程序,那么Kubernetes可能是为私有云、公共云或混合云托管创建云原生应用程序的最理想方式之一。Kubernetes可自动部署、管理和扩展容器化应用程序,使该过程更简单、更快速、更高效。用户现在可以通过一键更新来更新他们在集群中使用的Kubernetes核心版本。使Kubernetes集群保持最新变得相当容易,因为现在无需重新部署集群或应用程序即可完成。Kubernetes是由云原生计算基金会(CNCF)和Linux基金会管理的开源项目。这确保了该项目得到大型开源社区的最佳实践和想法的支持,并消除了依赖单一供应商的风险。网址:https://kubernetes.io/系统支持:基于Web和LinuxRedHatOpenShiftContainerPlatformRedHatOpenShiftContainerPlatform是一个开源的企业级Kubernetes平台,可用于开发、部署和管理跨企业内部、私有云和公共云架构中的容器化应用程序。网址:https://www.openshift.com/products/container-platform系统支持:Linux、WindowsApacheMesosMesoso是一款基于Linux内核的开源集群管理工具,可以运行在任何平台(Linux、Windows或OSX)).它还为应用程序提供用于资源管理和调度的API。可以从专用服务器或虚拟机中抽象出CPU、内存、存储等资源,使弹性系统易于构建和高效运行,具有出色的容错能力。Mesos使用两层调度系统,其中它确定分配给每个框架的资源数量,框架确定接受哪些资源以及在这些资源上运行哪些任务。您可以扩展到50,000个节点,在不同框架之间共享集群,并持续优化。Mesos允许集群运行应用程序所在的框架,将负载分布在不同的服务器之间,以避免过载并获得最佳性能。Mesos通常用于Java、Python、Scala和R应用程序。网址:http://mesos.apache.org/系统支持:Linux、OSX和WindowsFreeBSDFreeBSD以其功能、速度、安全性和稳定性着称。它来自BSD,是UCBerkeley部署的UNIX的改编版本。它被广泛的社区部署和遵循。FreeBSD提供了许多独特的功能,尤其以创建出色的Internet或Intranet服务器而闻名。FreeBSD可以在高负载下提供强大的网络服务,内存利用效率高,可以快速响应百万并发进程。FreeBSD还为连接器和完整平台提供改进的网络操作系统功能,支持从Intel备受推崇的高端连接器到ARM、MIPS和PowerPC硬件平台的一切。FreeBSD拥有超过23,000个库和皮肤,支持桌面、助手、设备和集成媒体的应用程序。网站:https://www.freebsd.org/系统支持:Unix和基于Web的VagrantVagrant是一个用于自动创建和配置可移植和可运行虚拟机的工具。Vagrant相对于Docker等DevOps工具的一大优势在于,任何计算机科学家/程序员/开发人员(甚至使用Windows的人员)都可以快速掌握并使用它,因为Vagrant配置并自动创建虚拟机。Vagrant安装在开发人员的计算机上,面向开发环境,而不是生产环境。甚至Vagrant的开发公司也不推荐在生产中使用Vagrant。Vagrant是跨平台的,支持的系统包括:Mac、Windows、CentOS和Debian。Vagrant的定位是介于开发者之间,安装可移植且可以运行开发环境的工具。默认情况下,Vagrant使用VirtualBox进行虚拟化,但它可以与任何虚拟化软件一起使用,并且Vagrantfile配置文件的语法也非常简单。网址:https://www.vagrantup.com/系统支持:Debian、centOS、ArchLinux、Linux、FreeBSD、macOS和MicrosoftWindows文件大小:210MB(适用于Windows)LXCLXC是一种操作系统级虚拟化技术,允许用户独立创建和运行多个虚拟Linux环境。与Docker不同的是,LXC可以看作是一个完整的操作系统。另一方面,Docker只能运行单个应用程序,对操作系统有一定的限制。LXC比Docker更轻便、更安全,因为它消耗的资源更少,并且不需要以root身份运行。上述优势的代价是增加了复杂性,最重要的是我们必须添加糟糕的文档。通常当我们使用容器时,我们想要的是快速轻松地创建我们的工作环境。因此,LXC替代方案更适合高级用户。网址:https://linuxcontainers.org/系统支持:Linux【本文为专栏作者“安全牛”原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】点此进入查看该作者的更多好文章
