0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

除了Docker我们还有哪些选择?

dyquk4xk2p3d 来源:ContainIQ 作者:Sudip Sengupta 2022-12-01 11:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目前,许多组织都采用容器来进行开发和运行应用程序。Docker 是该领域功能最丰富且使用最广泛的产品之一,已有数百万应用程序在使用它。Docker 本身有着强大的生态系统,并提供了一个广泛的工具包来管理容器化过程。

所谓三十年河东,三十年河西,曾经在容器领域叱咤风云的 Docker 如今已风光不再。抛开情怀,我们不得不承认,Docker 已经被后浪拍死在沙滩上了……

因此,Docker 并不是容器的唯一选择,容器还有其他的替代品,它们提供了独特的用例和功能。

本文将深入探讨 Docker 的相关替代品,其中包括一系列与 Docker 类似的产品以及可以作为 Docker 生态系统组件替代品的工具。

Podman

Podman 是 RedHat 开发的一个无守护程序的开源 Linux 原生容器引擎,用于构建、运行和管理 Linux OCI 容器与容器镜像。尽管 Podman 提供了一个类似于 Docker 的命令行界面,但它的操作方式并不相同。

Docker 和 Podman 之间的一个显著区别是,Docker 运行一个持久的、自给自足的运行时来管理其对象或称为 dockerd 的守护进程;而 Podman 并不依赖守护进程来工作,相反Podman 将容器作为子进程启动,它还直接与注册表和使用运行时进程的 Linux 内核进行交互。也正因如此,Podman 被称为无守护进程的容器技术。

没有守护进程提高了 Podman 作为容器引擎的灵活性,消除了对单个进程的依赖。Podman 与 Docker 的另一大不同就是它不需要 root 权限。这一特点提供了一个额外的安全缓冲区,限制了某些可能操纵关键系统设置并使容器和包含的应用程序易受攻击的潜在危险进程。

此外,Podman 可以运行 pod(包含一个或多个容器的集合),作为一个单一实体管理,并利用共享的资源池。通过这项能力,Podman 用户可以将他们的工作负载转移到 Kubernetes。

LXD

LXD 是一个专为 LXC Linux 容器设计的开源容器引擎。LXC 使用户能够在隔离的容器或类似于虚拟机的虚拟环境中运行应用程序,而无需承担管理单个内核的技术负担。LXD 提供了一个用于连接 LXC 软件库的接口,同时创建了一个负责处理网络、数据存储和管理多个LXC容器的守护进程。

尽管 LXC 可以作为独立工具运行,但它拥有有限的功能子集。LXD 提供了这些附加功能,因此依赖于 LXC 工作。

LXD 与 Docker 的主要区别在于:Docker 建议每个容器只运行单个进程,而LXC/LXD 中的容器则可以运行多个进程。此外,Docker 容器可移植性更强,因为与 LXD 相比,Docker 有效地抽象了资源。最后,Docker 支持在 Windows 和 macOS 环境上运行,但 LXD 只支持 Linux。

Containerd

Containerd 是一个高级容器运行时,它通过在底层运行 runc 以提供操作系统和容器引擎之间的接口。runc 是一个支持 Windows 和 Linux 的守护进程,它抽象了特定于操作系统的功能,使运行和监督容器以及管理图像传输和存储变得更加容易。

Containerd 提供的这种抽象级别功能消除了进行若干低级系统调用的复杂性,使得容器的可移植性得以实现。

然而,与 Docker 不同的是,Containerd 不处理镜像的构建或卷的创建。有趣的是,Containerd 是 Docker 的默认运行时,现在它是一个独立的工具,就像 runc 一样。这也使得 Containerd 像 Kubernetes 一样成为一个方便的编排工具,Containerd 也是最受欢迎的 Docker 替代品之一。

Buildah

Buildah 是红帽基金会为容器化系统开发的一个 OCI 镜像构建工具。它是一个提供类似于在 Docker 中运行 docker build 功能的工具。Buildah 经常与 Podman 一起使用,互作补充,例如,Podman 在后台使用 Buildah 功能的子集来实现其构建过程。

它可以从 Dockerfile 或 Containerfile 中构建镜像,并生成与使用 Docker 创建的镜像相同的镜像,因为这些镜像是符合 OCI 规范的。

此外,它还提供了对镜像层的细粒度控制,允许向单个层提交多次更改。它还提供了从头开始构建镜像的能力,即不包含任何内容的镜像,这让用户可以自由地只添加运行应用程序所需的软件包。最后,与 Docker 不同的是,在 Buildah 中用户只能看到他们构建的镜像,因为它是特定于用户的。

BuildKit

BuildKit 是第二代构建镜像的 Moby 项目,在较新的 Docker 版本中作为实验性功能提供。与 Docker 一样,它使用守护程序运行。不过,标准 Docker 构建和 BuildKit 之间一个主要的区别是,前者使用逐层构建,而后者提供并行构建处理。这个功能提高了性能,使构建速度变得更快。

BuildKit 还允许跳过未使用的阶段,改善增量构建,并允许无根构建。此外,BuildKit 使用高速缓存来减少构建镜像每一层的需要。

Kaniko

Kaniko 是一个谷歌镜像构建工具,它可以从 Dockerfile 构建镜像。它和 Buildah 一样是无守护进程的,但更侧重于在 Kubernetes 中构建镜像。

Kaniko 对于本地开发实例来说不是很方便,因为它通常作为镜像与 Kubernetes 等容器编排器一起运行。然而,对于 Kubernetes 集群中的持续集成和交付管道,Kaniko 可以成为一个实用的工具。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3836

    浏览量

    84768
  • 镜像
    +关注

    关注

    0

    文章

    178

    浏览量

    11552
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14028

原文标题:除了 Docker,我们还有哪些选择?

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    香港服务器支持Docker和Kubernetes吗?

    在云原生技术成为主流的今天,Docker和Kubernetes(K8s)已成为现代化应用开发和部署的事实标准。对于选择香港服务器的开发者与企业而言,一个核心问题是:香港服务器能否完美支持Docker
    的头像 发表于 10-21 15:47 390次阅读

    【HZ-T536开发板免费体验】Docker 环境安装及应用

    一、检查 Docker 安装状态 板子提示“command not found”或无版本信息,说明 Docker 未安装,如有需要请自行安装 二、Docker 环境安装 首先更新系统包索引并安装
    发表于 09-01 17:59

    docker无法启用怎么解决?

    mengxing@mengxing-virtual-machine:/etc/docker$ sudo systemctl daemon-reload
    发表于 06-23 07:17

    Docker Volume管理命令大全

    Docker Volume管理命令大全
    的头像 发表于 05-28 17:14 628次阅读

    如何使用Docker部署大模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器化技术,能够将模型及其依赖环境打包成一个可移植的容器,极大地简化了部署流程。本文将详细介绍如何使用 Docker 部署大模型,并给出具体的步骤和示例。
    的头像 发表于 05-24 16:39 816次阅读

    Docker Compose的常用命令

    大家好,今天给大家分享Docker Compose的常用命令,以及docker-compose文件的属性。Docker Compose 是一个用于定义和运行多容器 Docker 应用应
    的头像 发表于 04-30 13:40 944次阅读

    Docker常用命令大全

    Docker 是一种开源的应用容器引擎,广泛应用于开发、部署和运行分布式应用。掌握 Docker 常用命令对于开发人员和运维人员来说非常重要。本文将为大家整理常用的Docker 命令,并按照功能分为多个部分,帮助你高效使用
    的头像 发表于 04-22 12:47 681次阅读

    【技术案例】Android in Docker

    的资源利用,广泛用于开发、测试和生产环境中。AndroidinDocker介绍宿主机系统中通过docker运行Android容器。利用docker的特性,我们可以将
    的头像 发表于 04-02 16:33 1471次阅读
    【技术案例】Android in <b class='flag-5'>Docker</b>

    基于Docker镜像逆向生成Dockerfile

    在本文中, 我们将通过理解Docker镜像如何存储数据, 以及如何使用工具查看镜像方方面面的信息来逆向工程一个Docker镜像; 以及如何使用Python的Docker API来构建一
    的头像 发表于 03-10 09:45 1230次阅读
    基于<b class='flag-5'>Docker</b>镜像逆向生成Dockerfile

    华为 FlexusX 与 Docker+Nginx 的高效整合之路

    。这一高效整合方案,不仅实现了资源的最大化利用,还大幅提升了 Web 应用的访问速度与稳定性。值此 828 华为云企业上云节之际,我们诚邀您体验 FlexusX 与 Docker
    的头像 发表于 01-23 17:55 584次阅读
    华为 FlexusX 与 <b class='flag-5'>Docker</b>+Nginx 的高效整合之路

    云服务器 Flexus X 实例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com)   2、docker 安装 yum install
    的头像 发表于 01-13 11:09 1236次阅读
    云服务器 Flexus X 实例,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    Dockerfile镜像制作与Docker-Compose容器编排

    Dockerfile镜像制作 docker/podman中, 镜像是容器的基础,每次执行docker run的时候都会指定哪个基本镜像作为容器运行的基础。我们之前的docker的操作都
    的头像 发表于 01-07 11:01 1159次阅读
    Dockerfile镜像制作与<b class='flag-5'>Docker</b>-Compose容器编排

    docker的基本命令和使用示例

    DotCloud 公司是一家 PAAS 服务提供商,从 docker 的出身也可以看出它的主要功能和方向。
    的头像 发表于 01-06 15:59 787次阅读

    docker通过中间镜像加速部署

    使用 docker 打包镜像的时候, 每次耗费时间最多的就是 docker build 的过程. 特别是对于前端工程的打包, 有时候下载依赖包的时间就要 10 几分钟, 这就导致发布版本的效率极低.
    的头像 发表于 01-06 12:39 855次阅读

    在 Huawei Cloud EulerOS 系统中安装 Docker 的详细步骤与常见问题解决

    前言   1. 安装Docker   1.1 系统更新与依赖安装   1.2 添加华为云Docker仓库   2. 解决仓库配置错误   2.1 手动修改仓库配置文件   2.2 安装Docker
    的头像 发表于 12-26 18:12 2736次阅读
    在 Huawei Cloud EulerOS 系统中安装 <b class='flag-5'>Docker</b> 的详细步骤与常见问题解决