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

5
我该如何在Kubernetes Pod中运行Docker镜像?
我的一个队友定义了一个新的Docker镜像并将其推送到我们团队的私人注册表。我拥有一些在我们的Kubernetes群集中运行的代码,我们需要让我的代码有效地运行docker run gcr.io/our-project/teammates-image:latest
我一直在研究如何在我们的Kubernetes Pod上启用Docker-in-Docker,但我没有什么好运气。我目前正在尝试使用minikube进行实验,但每当我尝试运行docker run时,我都会得到以下错误:docker:无法连接到unix:///var/run/docker.sock的Docker守护程序。 Docker守护进程正在运行吗?。
我已经向我的容器规范中添加了 securityContext: privileged:true 我怀疑我需要更多的配置,但还没有找出是什么。
我还在尝试评估是否可以从Kubernetes Pod中运行kubectl run -image =gcr.io/our-project/teammates-image :lastest
有没有一种“正确”的方法可以从Kubernetes Pod中运行Docker映像?我该如何在Docker-in-Docker中运行镜像?
1个回答

8

以下是我最终采用的解决方案,供将来可能遇到此问题的任何人参考。

在需要运行其他docker镜像的主要docker镜像中安装kubectl。我是按照这些文档操作完成的。一旦安装了kubectl,它应该自动能够与其运行的集群进行交互,不需要额外的身份验证。

接下来,要运行teammates-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. 返回容器的返回代码
  4. 完成后删除pod

完美的答案。使用https://docs.python.org/3/library/subprocess.html#subprocess.run来随意操作请求。 - abhishake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接