您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Docker不再是独一的选择
    时间:2020-11-11 21:09 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Docker并不是独一的容器化工具,能够还有更好的选择……

    在容器的早期时代(其实更像是4年前),Docker是容器游戏中独一的玩家。但如今状况曾经不一样了,Docker不再是独一的一个,而只是其中一个容器引擎而已。Docker允许我们构建、运转、拉、推或反省容器镜像,但是关于每一项义务,都有其他的替代工具,甚至能够比Docker做得还要好。所以,让我们探求一下,然后再卸载(只是能够),直至完全遗忘Docker……

    Docker不再是独一的选择

    那,为什么不再用Docker了?

    假设你曾经运用Docker很长时间了,估量要真正压服你去思索其他工具,得先提供些依据。

    首先,Docker是一个单体工具。它尝试去涵盖一切的功用,通常这并不是最佳实际。大少数状况下,我们都是只选择一种专门的工具,它只做一件事,并且做得十分好,十分精。

    假设惧怕切换到不同的工具集是由于将不得不学习运用不同的CLI、API或许说不同的概念,那么这不会是一个成绩。本文中展现的任何工具都可以是完全无缝的,由于它们(包括Docker)都遵照OCI (Open Container Initiative)下的相反标准。它们包含了容器运转时、容器分发和容器镜像的标准,其中涵盖了运用容器所需的一切特性。

    有了OCI,你可以选择一套最契合你需求的工具,同时你依然可以享用跟Docker一样运用相反的API和CLI命令。

    所以,假设你情愿尝试新的工具,那么让我们比较一下Docker和它的竞争对手的优缺陷和特性,看看能否有必要思索保持Docker,运用一些新的闪亮的工具。

    容器引擎

    在比较Docker和其他工具时,我们需求将其分解为组件,首先我们先讨论一下容器引擎。Container Engine是一种工具,它为处置镜像和容器提供用户界面,这样就不必处置SECCOMP规则或SELinux策略之类的事情。它的任务还包括从远程仓库提取镜像并将其扩展到磁盘。它看起来也是运转容器,但实践上它的任务是创立容器清单和带有镜像层的目录。然后它将它们传递到容器运转时,如runC或Crun(稍后我们将讨论这一点)。

    目前曾经有许多容器引擎,但Docker最突出的竞争对手是由红帽开发的Podman。与Docker不同,Podman不需求Daemon来运转,也不需求root特权,这是Docker长期以来不断关注的成绩。基于它的名字,Podman不只可以运转容器,还可以运转pods。假设你不熟习pods的概念,其实,复杂的概括就是,Pod是Kubernetes的最小计算单元。它由一个或多个容器(主容器和执行支持义务的Sidecar)组成,这使得Podman用户以后更容易将他们的任务负载迁移到Kubernetes。因此,作为一个复杂的演示,这是如何在一个Pod中运转两个容器:

    ~ $ podman pod create --name mypod 

    ~ $ podman pod list 

     

     

    POD ID         NAME    STATUS    CREATED         # OF CONTAINERS   INFRA ID 

    211eaecd307b   mypod   Running   2 minutes ago   1                 a901868616a5 

     

     

    ~ $ podman run -d --pod mypod nginx  # First container 

    ~ $ podman run -d --pod mypod nginx  # Second container 

    ~ $ podman ps -a --pod 

     

     

    CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS            PORTS  NAMES               POD           POD NAME 

    3b27d9eaa35c  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago  Up 1 second ago          brave_ritchie       211eaecd307b  mypod 

    d638ac011412  docker.io/library/nginx:latest  nginx -g daemon o...  5 minutes ago  Up 5 minutes ago         cool_albattani      211eaecd307b  mypod 

    a901868616a5  k8s.gcr.io/pause:3.2                                  6 minutes ago  Up 5 

    最后,Podman提供了与Docker完全相反的CLI命令,因此只需执行alias docker = podman并装作什么都没有改动。

    除了Docker和Podman之外,还有其他的容器引擎,但我团体以为它们都是没什么出路的技术,或许都不太适宜本地开发和运用。但是,要片面了解,至少要看一下其中的内容:

    (责任编辑:admin)