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 可以成为一个实用的工具。

审核编辑 :李倩

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

    关注

    114

    文章

    3631

    浏览量

    79541
  • 镜像
    +关注

    关注

    0

    文章

    153

    浏览量

    10587
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603

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

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

收藏 人收藏

    评论

    相关推荐

    精通Docker网络:Bridge驱动深度解析

    除了使用 docker0 网桥外,用户还可以使用自定义的网桥,然后通过 --bridge=BRIDGE 参数传递给 docker daemon。
    的头像 发表于 03-31 15:58 823次阅读
    精通<b class='flag-5'>Docker</b>网络:Bridge驱动深度解析

    除了S参数,还有哪些网络参数呢?

    对于射频人员来讲,最熟悉的可能就是S参数了。但是除了S参数之外,其实还有其他很多网络参数。
    的头像 发表于 02-27 16:35 460次阅读
    <b class='flag-5'>除了</b>S参数,<b class='flag-5'>还有</b>哪些网络参数呢?

    如何利用树莓派安装DockerDocker-compose呢?

    本文主要演示了树莓派如何安装DockerDocker-compose的过程。
    的头像 发表于 12-14 16:19 1199次阅读
    如何利用树莓派安装<b class='flag-5'>Docker</b>和<b class='flag-5'>Docker</b>-compose呢?

    docker核心组件有哪些

    Docker 是一种开源的容器化平台,它能够实现将应用程序及其依赖项打包到一个可移植的容器中,从而实现快速、可重复、可扩展的部署和管理。Docker 的核心组件包括 Docker Engine
    的头像 发表于 11-23 09:47 735次阅读

    docker进入容器的方法有哪些

    Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和运行命令等操作。本文将详细介绍Docker进入容器的各
    的头像 发表于 11-23 09:45 3390次阅读

    如何启动本机docker服务

    在本机上安装DockerDocker支持多个操作系统,包括Linux、Windows和Mac OS等。根据你使用的操作系统,选择对应的安装方式进行安装。 对于Linux系统,可以通过以下命令来安
    的头像 发表于 11-23 09:43 619次阅读

    docker部署对性能的影响

    Docker 是一个流行的容器化平台,它提供了一种轻量级的虚拟化技术,使得应用程序可以在独立的容器中运行。然而,部署应用程序到 Docker 容器中可能会对性能产生一些影响。在本文中,我们将探讨
    的头像 发表于 11-23 09:31 675次阅读

    docker部署mysql的坏处

    的问题和挑战。在这篇文章中,我们将探讨 Docker 部署 MySQL 的坏处。 首先,Docker 部署 MySQL 可能会面临性能问题。尽管 Docker 提供了轻量级的容器化解决
    的头像 发表于 11-23 09:29 703次阅读

    除了新能源,还有哪些产品需要做可靠性测试?

    除了新能源汽车需要做快速温变试验箱可靠性检测,还有什么产品需要进行可靠性检测呢? 我们一起来看看?
    的头像 发表于 11-20 17:24 260次阅读
    <b class='flag-5'>除了</b>新能源,<b class='flag-5'>还有</b>哪些产品需要做可靠性测试?

    如何判断是否在docker镜像中?

    /issue 可以发现两者区别。 还有一个方法,就是修改主机名: 因为 docker 创建使用的是 host 模式,所以需要创建完 docker 容器后,退出,在云主机上修改: # 已完成 d
    发表于 09-20 07:42

    docker基础知识和使用bmnnsdk时的docker常用命令

    本文旨在介绍docker基础知识和使用bmnnsdk时的docker常用命令,帮助没有接触过docker的开发者快速上手。 一、docker基础概念 1.1 什么是
    发表于 09-18 07:59

    Docker入门指南

    您能够更高效地开发,因为您可以专注于应用程序。好处包括: •提高了生产力•提高了基础设施利用率•能够运行传统环境和新架构我们还将向您展示如何使用Arm和Docker实现以下功能: •探索多种计算选择
    发表于 08-02 06:09

    docker 搜索镜像,docker查看镜像详细信息(docker下载镜像命令)

    docker search mysql 可以通过添加参数来过滤镜像搜索结果。 docker search --filter "is-official=true" mysql 该命令将为我们提供所有官方提供的MySQL镜像。
    的头像 发表于 07-19 09:46 1119次阅读

    OpenHarmony Docker移植实践

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony Docker简介 从操作系统诞生之日起,虚拟化技术就不断的演进与发展,结合目前云原生的发展态势,容器
    的头像 发表于 05-18 02:50 389次阅读
    OpenHarmony <b class='flag-5'>Docker</b>移植实践

    Linux中如何使用Docker安装MySQL

    如果您是 MySQL 的新手或希望快速轻松地安装 MySQL 数据库的人,那么本文适合您,在本文中,我们将学习如何在 Linux 中使用 DockerDocker compose 设置 MySQL。 让
    的头像 发表于 05-12 16:22 3127次阅读
    Linux中如何使用<b class='flag-5'>Docker</b>安装MySQL