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

时间:2018-04-23 23:24:08

标签: docker kubernetes docker-in-docker

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

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

我一直在寻找在我们的kubernetes吊舱上启用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

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

1 个答案:

答案 0 :(得分:4)

以下是我最终使用的解决方案,适用于将来偶然发现这种情况的任何人。

在需要运行其他docker镜像的主docker镜像中安装kubectl。我按照these docs执行了此操作。安装kubectl后,它应该能够自动与其运行的群集进行交互,并且不需要额外的身份验证。

接下来,要运行teammtes-image:latest泊坞窗映像,您可以在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. 返回容器的返回码
  4. 完成后删除pod