在运行 containerd 的 Kubernetes (AKS 1.19.0) 上构建没有 docker 的 Dockerfile

问题描述

我有 Azure devops 管道,在 AKS 上构建 dockerfile,因为 AKS 正在弃用最新版本的 docker,请建议最佳实践,在 AKS 集群上构建没有 docker 的 dockerfile。 探索 Kaniko,构建无需 docker 即可构建..

解决方法

什么都没有改变。您仍然可以在开发人员或 CI 系统上使用 docker builddocker push 来构建 Docker 映像并将其推送到存储库。唯一的区别是,在 Kubernetes 集群中使用 Docker 作为容器后端不再受支持,但这是您的应用程序不知道或不关心的低级管理员级别的决定。

,

除非您以某种方式使用 Kubernetes 集群中的主机 docker 套接字进行构建,否则此更改不会影响您。如果您在 Kubernetes 集群中从主机安装 docker 套接字,我会认为这是您想要修复的安全问题。

Docker Desktop 将 docker 引擎作为容器运行在 containerd 之上,允许开发人员在该环境中构建和运行容器。类似的可以用在容器内运行 docker 引擎的 DinD 构建模式来完成,不同之处在于底层容器管理工具是 containerd 而不是完整的 docker 引擎,但容器化的 docker 引擎对此无动于衷。

作为在完整 docker 引擎中构建的替代方案,我建议查看 buildkit,它是 20.10 中 docker 中当前的默认构建工具。它使用 containerd 并提供 selection of manifests 以作为独立构建器直接在 kubernetes 中运行构建。