虽然有点突然,但是我今天想来谈谈 container。对於大部分的人来说,讲到 container 就会想到 docker,然而实际上,docker 并不是可以跟 container 互动的工具的唯一选项。在这个领域里面,其实还有着很多其他的选项,像是 Buildah、Podman 和 Skopeo 三个工具就很常被拿来一起跟 docker 做比较。
关於 container 本身的概念我就不细谈了,毕竟我的了解也不深,网路上就有不少讲得更为深入的文章(像是这篇),下面我就简单介绍一下,平常的开发流程中可以使用的替代工具吧。
首先就来讲讲这几个工具到底是什麽吧,这三个都是 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 的。
讲到 build image 的话,我想另一个也很常听到的选项是 Kaniko,一个由 Google 释出的工具,同样也是以不需要 daemon 作为特色。不过比较特别的是它是专门设计用来跑在 k8s 丛集或是 container 内的。
今天会突然想要讲讲这个是因为,前几天写到在 CI pipeline 内 build image 这件事,当初是使用 docker 完成的,然而其实这种做法有机会带来一些安全性的问题(网路上应该可以找得到一些讨论,像是这个),还有 docker 长期为人诟病的 root 跟 daemon 问题(虽然现在 docker 有提供 rootless mode,但还不是预设)等等,都会在 CI 的流程造成一些问题。
後来我才想到曾经看过有其他工具可以替代,因此在这边纪录一下,供大家参考。
前情提要 在昨天我们建立了 Angular 专案、使用 JSON-server 来制作 mock d...
我们现在有了基本的日志,但是每次输入完重整页面都会刷新,因为这些资料都只存在於浏览器,没有真正储存到...
本篇大纲:transition( ) 移动、变换颜色、transition.delay( )、tr...
在开始讲解指令前,先推荐给大家一个平台:六角学院,会提到这个平台是因为!六角学院的 Git &...
大家好,我是长风青云。今天是铁人赛的最後一天了。我们就来说说题外话。 建议还是看影片,因为我下面虽然...