Day 26:Container != Docker Container

虽然有点突然,但是我今天想来谈谈 container。对於大部分的人来说,讲到 container 就会想到 docker,然而实际上,docker 并不是可以跟 container 互动的工具的唯一选项。在这个领域里面,其实还有着很多其他的选项,像是 Buildah、Podman 和 Skopeo 三个工具就很常被拿来一起跟 docker 做比较。

关於 container 本身的概念我就不细谈了,毕竟我的了解也不深,网路上就有不少讲得更为深入的文章(像是这篇),下面我就简单介绍一下,平常的开发流程中可以使用的替代工具吧。

Buildah、Podman、Skopeo

首先就来讲讲这几个工具到底是什麽吧,这三个都是 RedHat 开发的工具,因此常常被放在一起说明。

首先是 buildah,他是一套专门为了 build image 设计的工具,在使用我想他跟 docker 最大的不同就是,我们再也不需要 root 跟 daemon 了。并且 buildah 不一定要使用 Dockerfile 来 build image,还可以有其他的选项。

而 podman 主要是专注在运行 container 上面,他跟 docker 有几乎一样的 CLI 命令,并且一样是不需要 root 跟 daemon 的。另外还有一点,如同它的名字所示,podman 还提供了一些对 pod 操作的功能,因此在使用 k8s 的环境下,能够获得一些方便。

最後是 skopeo,他有点像是原本的 docker inspect 的替代品,但可以做到更多事。像是我曾经遇到的一个需求就是,需要修改远端 registry 的 image tag,透过 docker CLI 的话,我需要先把 image 拉下来打新的 tag 再推上去,然而 skopeo 是可以直接做到远端更新 tag 的。

Kaniko

讲到 build image 的话,我想另一个也很常听到的选项是 Kaniko,一个由 Google 释出的工具,同样也是以不需要 daemon 作为特色。不过比较特别的是它是专门设计用来跑在 k8s 丛集或是 container 内的。

小结

今天会突然想要讲讲这个是因为,前几天写到在 CI pipeline 内 build image 这件事,当初是使用 docker 完成的,然而其实这种做法有机会带来一些安全性的问题(网路上应该可以找得到一些讨论,像是这个),还有 docker 长期为人诟病的 root 跟 daemon 问题(虽然现在 docker 有提供 rootless mode,但还不是预设)等等,都会在 CI 的流程造成一些问题。

後来我才想到曾经看过有其他工具可以替代,因此在这边纪录一下,供大家参考。

参考文章


<<:  Day25:NavigationView

>>:  Day 27 | 状态管理 - BLoC基本介绍

第 3 天 「速速前吕布奉先!」|NgModule、HttpClientModule、新增元件

前情提要 在昨天我们建立了 Angular 专案、使用 JSON-server 来制作 mock d...

Day 16 建立资料库

我们现在有了基本的日志,但是每次输入完重整页面都会刷新,因为这些资料都只存在於浏览器,没有真正储存到...

Day10-D3 Transition 动画

本篇大纲:transition( ) 移动、变换颜色、transition.delay( )、tr...

【Day05】Git 版本控制 - Git 基本指令(1)

在开始讲解指令前,先推荐给大家一个平台:六角学院,会提到这个平台是因为!六角学院的 Git &...

Day30 - 完赛及工作心得

大家好,我是长风青云。今天是铁人赛的最後一天了。我们就来说说题外话。 建议还是看影片,因为我下面虽然...