Files

在 Kubernetes 中使用 act_runner 部署 Docker-in-Docker(DinD)

注意:Docker-in-Docker(DinD)在 Kubernetes 中需要提升权限。目前的实现方式是将 Pod 的 SecurityContext(安全上下文)设置为 privileged(特权模式)。请注意这存在潜在安全风险,恶意应用可能突破容器隔离上下文。

本目录包含文件:

  • dind-docker.yaml
    用于在 Kubernetes 中创建作为运行器的 Deployment(部署)和 Persistent Volume(持久卷)。Docker 凭证会在每次 Pod 连接时重新生成,无需持久化存储。

  • rootless-docker.yaml
    用于在 Kubernetes 中创建 rootless(非特权)模式的 Deployment 和 Persistent Volume 作为运行器。Docker 凭证会在每次 Pod 连接时重新生成,无需持久化存储。

关键术语说明:

  1. privileged 模式:容器获得与宿主机 root 用户几乎相同的权限
  2. SecurityContext:Kubernetes 中定义 Pod/容器权限和安全配置的对象
  3. rootless 模式:以非特权用户身份运行 Docker 守护进程,安全性更高
  4. act_runner:Gitea 的 CI/CD 运行器组件

安全建议:在生产环境中,建议优先考虑 rootless 模式,若必须使用 DinD,建议通过 Pod 安全策略、网络策略和审计日志加强安全监控。