加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

Docker允许构建、运行、拉

发布时间:2021-05-25 20:57:19 所属栏目:教程 来源:互联网
导读:副标题#e# 对于已经用了很久docker的人,可能需要花费些功夫去说服自己去考虑转换使用不同的工具。 Docker是一个庞大单一的工具,它尝试做任何事,但通常没有用最好的方法去做。我们最好选择只做一件事,但确实做得很好的专门工具。如果害怕切换不同的工具
副标题[/!--empirenews.page--]

对于已经用了很久docker的人,可能需要花费些功夫去说服自己去考虑转换使用不同的工具。

Docker是一个庞大单一的工具,它尝试做任何事,但通常没有用最好的方法去做。我们最好选择只做一件事,但确实做得很好的专门工具。如果害怕切换不同的工具集,担心不得不学习使用不同的命令行界面(CLI)、不同的API或通常使用不同的概念,那么现在这将不再是问题。

选择本文中显示的任何工具都是完全无缝衔接的,因为它们(包括Docker)都遵循开放容器计划(OCI)下的相同规范。该计划包含有关容器运行时、容器分发和容器镜像的规范,涵盖了使用容器所需的所有功能。借助OCI,你可以选择最符合需求的一组工具,与此同时仍然可以使用与Docker相同的API和CLI命令。

因此,如果你愿意尝试新工具,那么请比较一下Docker及其竞争对手的优势、劣势和功能,看看是否有必要考虑放弃Docker,试试某些新工具。

容器引擎

在将Docker与其他任何工具进行比较时,我们需要按组件对其进行分类,并且首先要谈的是容器引擎。

容器引擎是一种工具,提供了用于处理图像和容器的用户界面,因此不必担心扰乱SECCOMP规则或SELinux策略。它的工作还包括从远程存储库中提取图像并将其扩展到磁盘,似乎也在运行容器,但它实际上的工作是创建带有图像层的容器清单和目录,然后将它们传递到容器运行时,如runc或crun。

目前有许多可用的容器引擎,Docker最主要的竞争对手是Red Hat开发的Podman。与Docker不同,Podman不需要运行守护进程,也不需要root特权,这是Docker长期以来一直关注的问题。

顾名思义,Podman不仅可以运行容器,还可以运行pods。pod是Kubernetes的最小计算单元。它由一个或多个容器组成,执行支持任务。这使Podman用户以后可以更轻松地将其工作负载迁移到Kubernetes。以下是如何在单个pod中运行2个容器的方法:

~ $ podman podcreate --name mypod 

        ~ $ podman podlist 

             POD ID         NAME   STATUS    CREATED         # OFCONTAINERS   INFRA ID 

        211eaecd307b   mypod  Running   2 minutes ago   1                 a901868616a5 

             ~ $ podman run -d--pod mypod nginx  # Firstcontainer 

        ~ $ podman run -d--pod mypod nginx  # Secondcontainer 

        ~ $ podman ps -a--pod 

             CONTAINERID  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    

最后,Podman提供了与Docker完全相同的CLI命令,只需执行alias Docker=Podman并假装没有任何更改。

除了Docker和Podman,还有其他的容器引擎,但是笔者认为它们都没有出路,或者都不适合本地开发和使用。具体原因如下:

LXD——LXD是用于LXC(Linux容器)的容器管理器(守护进程)。这个工具提供了运行系统容器的能力,这些容器提供了更类似于VMs的容器环境。它位于非常狭窄的空间中,用户不多,所以除非有非常具体的用例,否则最好使用Docker或Podman。

CRI-O——当搜索什么是CRI-O时,可能会发现它被描述为容器引擎。不过,它实际上是容器运行时。此外,它也不适合“正常”使用。笔者的意思是,它是专门为Kubernetes运行时(CRI)而构建的,而不是供最终用户使用。

rkt——rkt(“火箭”)是CoreOS开发的容器引擎。这里提到这个项目只是为了文章的完整性,因为项目结束了,它的开发也停止了,所以趁早别用它。

构建镜像

容器引擎中,Docker只有一个替换项,但当谈到构建镜像,我们有更多的选择。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读