K8S 中的 POD,如何安全的执行 docker build?

13 天前
 zerphyr

问题

服务运行环境是 k8s ,如果要执行 docker 命令,主要是安全问题,如何避免容器逃逸?

AI 提供了两种解决方案

  1. 挂载主机 sock 使用 dind 执行 docker 命令
  2. 使用 buildx/buildkit ,维护一个专门执行 docker 命令的集群提供 docker 能力

想问下大家有没有遇到类似的问题,如何解决的?

1375 次点击
所在节点    Kubernetes
13 条回复
weilai99
13 天前
用 kaniko
SmallZheng
13 天前
kaniko +1
anubu
13 天前
kaniko 不再维护了,但应该能继续用。docker 有 dind 镜像,sidecar 挂给业务容器,或 daemonset 每个节点放一个应该都行。
orFish
13 天前
@weilai99
@SmallZheng kaniko 已经 archived 了
danbai
13 天前
可以看看 firecracker-containerd 据描述他的隔离级别是对标 qemu
Clannad0708
13 天前
我工作接触过的,一种用 dind ,将宿主机的 sock 挂在进去,就是 dind 。还有可以试下用安全容器技术,katacontainer ,gvisor 。他们有自己的 sandbox 隔离容器。不和宿主机共享内核
zerphyr
13 天前
@weilai99 kaniko 不考虑,首先不维护,其次会有特性缺失
ExplodingFKL
12 天前
kaniko 算是侵入性最小的方案了,而且只是没有新特性更新了,错误修复还是在继续进行: https://github.com/chainguard-dev/kaniko

或者就是使用 sysbox : https://github.com/nestybox/sysbox 处理部分执行权限问题然后在 pod 内用 docker/podman

最后就是:不要考虑任何依赖特权模式的解决方案
weilai99
12 天前
buildah 也行
sampeng
12 天前
以前我也焦虑这个问题。后来想明白了。。这都是自己吓自己。没有任何手段从外部进来。docker build 也是自己写,ci 自动调度的。哪来的 docker 逃逸呢?
standchan
12 天前
buildkit
Lee2019
12 天前
docker context 配置一个远端的 docker host ,容器里面只要有 docker cli 即可
julyclyde
8 天前
我还以为在“里面”运行一个 docker daemon 才叫 dind 呢
没想到居然是挂外边的 sock 进去??

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

https://ex.noerr.eu.org/t/1156365

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

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

© 2021 V2EX