5

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

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

我一直在考虑在我们的 kubernetes pod 上启用 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

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

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

是否有从 kubernetes pod 中运行 docker 映像的“正确”方法?如何使用 docker-in-docker 运行映像?

4

1 回答 1

8

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

安装kubectl在需要运行其他 docker 镜像的主 docker 镜像中。我通过遵循这些文档来做到这一点。安装kubectl后,它应该能够自动与运行它的集群进行交互,并且不需要额外的身份验证。

接下来,要运行teammtes-image:latestdocker 映像,您可以在 python 中执行以下操作:

导入子流程
subprocess.run(["kubectl", "run", "teammates-image", "--image", "gcr.io/our-project/teammates-image:lastest", "--attach", "--重新启动”、“从不”、“--rm”])

这应该:

  1. 创建一个豆荚
  2. 运行图像
  3. 返回容器的返回码
  4. 完成后删除 pod
于 2018-04-24T20:16:01.557 回答