如何在 Kubernetes pod 中 运行 docker 映像?

How to run docker image in Kubernetes pod?

如何在 kubernetes pod 中 运行 一个 docker 图像?

我的一个队友定义了一个新的 docker 图像并将其推送到我团队的私有注册表中。我在我们的 kubernetes 集群中拥有一些代码 运行ning,我们需要让我的代码有效 docker run gcr.io/our-project/teammates-image:latest

我一直在考虑在我们的 kubernetes pods 上启用 docker-in-docker,但我运气不佳。我目前正在试验 minikube,每当我尝试 docker run 时,我都会得到:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

我已经添加了 securityContext: privileged: true

我的容器规格。我怀疑我需要更多配置,但还没弄清楚是什么。

我也在尝试评估我是否可以从 kubernetes pod 中 kubectl run --image=gcr.io/our-project/teammates-image:lastest

是否有 "correct" 方法从 kubernetes pod 中 运行 docker 图像?如何使用 docker-in-docker 运行 图像?

这是我最终为将来可能偶然发现此问题的任何人使用的解决方案。

在需要 运行 另一个 docker 映像的主 docker 映像中安装 kubectl。我是通过关注 these docs 来做到这一点的。安装 kubectl 后,它应该能够自动与其 运行 所在的集群进行交互,并且不需要额外的身份验证。

接下来,对于 运行 teammtes-image:latest docker 图像,您可以在 python 中执行类似以下操作:

import subprocess
subprocess.run(["kubectl", "run", "teammates-image", "--image", "gcr.io/our-project/teammates-image:lastest", "--attach", "--restart", "Never", "--rm"])

这应该:

  1. 创建一个 pod
  2. 运行 图片
  3. return容器的return代码
  4. 完成后删除pod