现在大家公司 Build 镜像都喜欢用什么? Podman? Docker? BuildKit? buildpacks?

2023-05-29 18:51:00 +08:00
 aljun

想问问大家目前公司都用什么来 build 镜像?因为目前走的 docker ,感觉各种难用,还得 dind ,而且还有 rootless 的问题

6839 次点击
所在节点    程序员
65 条回复
aljun
2023-05-30 13:12:28 +08:00
@abc612008 这个好像不是编译镜像的吧。。。
aljun
2023-05-30 13:12:48 +08:00
@Reficul bazel 好像不是编译镜像的吧,rules docker 是啥?
aljun
2023-05-30 13:13:05 +08:00
@yianing 是的,可以裸着用,但是日志貌似不是很方便
aljun
2023-05-30 13:13:19 +08:00
@clgon 有什么好处呢?
aljun
2023-05-30 13:13:37 +08:00
@ExplodingFKL 其他的有什么好处呢?
aljun
2023-05-30 13:16:03 +08:00
@loveuer 有什么好处不?
perfectlife
2023-05-30 13:27:26 +08:00
@aljun 我是在 k8s 上用 pod 去构建镜像的,运行时是 containerd 用不了挂载宿主机上 docker 的 unix socket 这种方式来,用 DinD 作为 Pod 的 Sidecar 或者使用 DaemonSet 在每个 containerd 节点上部署 Docker 这两种方式感觉都不太舒服
aljun
2023-05-30 13:29:42 +08:00
@BQsummer 现在都是 kaniko 吗?
aljun
2023-05-30 13:30:12 +08:00
@julyclyde 我是放在 containerd 里面 build ,所以需要 dind 的 image 去 run 这个
aljun
2023-05-30 13:30:41 +08:00
@DefoliationM 使用上方便吗?
aljun
2023-05-30 13:31:00 +08:00
@NaVient 感觉 buildkit 几乎就是 docker 呀
aljun
2023-05-30 13:31:31 +08:00
@perfectlife 我目前也差不多是这样,你有什么别的好的方案吗?
fioncat
2023-05-30 13:33:06 +08:00
我们是在 k8s 里面构建镜像的,为了避免 dind ,用的 kaniko 。
zhoudaiyu
2023-05-30 13:34:47 +08:00
现在用的是 docker BuildKit ,感觉还可以,就是 qemu 跨 arch 编译确实有些慢,不过这种一般都是需要编译 whl 时才涉及,还好
ExplodingFKL
2023-05-30 13:35:08 +08:00
@aljun 各有优劣,我的需求是要能在 kubernetes 下编译镜像并且需要的权限越少越好,经过对比:

- docker/buildkit/nerdctl(containerd) : (privileged)
- podman/Buildah : (fuse) https://www.redhat.com/sysadmin/podman-inside-kubernetes
- kaniko: UID=0

所以就选了 kaniko
perfectlife
2023-05-30 13:35:58 +08:00
@aljun buildkit 使用 daemonless 可以在没有 docker 情况下构建,或者用 kaniko
Reficul
2023-05-30 22:07:57 +08:00
@aljun #42

https://github.com/bazelbuild/rules_docker
bazel 是通用构建系统,有对应的构建规则就能构建对应的产物,没有对应的规则也可以自己编写相应的规则。

docker 镜像本质是一堆 rootfs 的分层 tar 包外加一个 manifest 文件。所以只要构建出来的文件产物符合镜像规范,就能够推送到仓库里去,而要实现这个过程 docker 环境也不是必须的,直接 curl registry 的 API 就够了。 诸如 skopeo 这种镜像工具就是类似的做法。

此外,所以如果你的程序(比如 Go 代码)支持交叉编译,交叉构建镜像也是自然支持的。因为 Dockerfile 里的 RUN 动作才是需要在当前机器的容器里跑,其他动作本质上都是在操作文件而已。
cumt21g
2023-05-30 23:55:05 +08:00
docker buildx
cumt21g
2023-05-30 23:56:40 +08:00
这么多用 kaniko 的,是没想到的
ysc3839
2023-05-31 01:24:10 +08:00
没啥特殊需求,docker buildx

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/943980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX