混合本地和远程Docker镜像repo?

时间:2018-05-11 18:57:45

标签: docker kubernetes repository

我在基于Kubernetes集群的CI-CD管道上工作。 管道运行如下:

  • ECR机器有Docker。
  • Jenkins作为一个容器运行。
  • " Builder image"用Java,Maven等构建。
  • 然后运行此构建器图像以构建应用程序映像
  • 然后该应用程序在kubernetes AWS集群中运行(使用Helm)。
  • 然后使用params运行构建器映像,以针对应用程序运行Maven驱动的测试。

现在,这些步骤的一部分并不需要推送图像。例如。可以随意缓存或处理构建器映像 - 如果需要,它将被重建。

因此这些图像的名称类似于mycompany/mvn-builder:latest

直接通过Docker使用时可以正常工作。

当Kubernetes和Helm来时,它想要图像URI,并尝试从远程仓库中获取它们。所以使用" local"名称mycompany/mvn-builder:latest无效:

Error response from daemon: pull access denied for collab/collab-services-api-mvn-builder, repository does not exist or may require 'docker login'

从技术上讲,我可以将其命名为<AWS-repo-ID>/mvn-builder并推送它,但这样就有可能在minikube本地运行所有这些,因为很难对愚蠢的AWS进行身份验证12小时令牌(记住它全部在集群中运行)。

是否可以混合使用远程仓库和本地缓存?换句话说,我可以让Docker查看远程存储库,如果找不到或失败(见上文),它会采用缓存的图像吗?

因此,如果我在Kubernetes资源中使用foo/bar:latest,它会尝试获取,发现它不能,并且会采用本地foo/bar:latest

0 个答案:

没有答案