jenkins - 为持续交付创建大量 Docker 标签有什么问题吗?

标签 jenkins docker docker-registry

目前,我们配置了 Jenkins 作业,用于发布我们的服务和其他服务,以将其部署到测试、阶段和生产。作为发布工作的一部分,我们创建一个包含服务二进制文件(及其所有依赖项)的 Docker 镜像,该镜像被推送到我们的私有(private) Docker 存储库(使用新版本创建一个新标签)。到目前为止,这很有效,因为很容易将这个(或更旧的)版本从 Jenkins 部署到我们不同的环境中,或者只是拉取某个版本的服务并在本地运行它。我的问题是,如果我们转向持续交付,这种方法是否有效?这个想法是,在每次成功构建之后,我们都会创建一个新的 Docker 标记并推送到我们的私有(private)仓库,并将镜像部署到测试环境。我担心的是,如果每天多次这样做,将会有很多 Docker 标记/层需要下载。恐怕随着时间的推移,提取图像需要很长时间(也许还有其他我不知道的问题)?

因此,为了更清楚地重新表述这个问题:

  • 是否可以创建很多 Docker 标签,或者这是什么?
    应该避免?
  • 拥有一个基本镜像(操作系统等),然后从源代码控制系统中的标签构建服务二进制文件,然后构建一个镜像,然后在部署时将其传输到不同的环境,会更好吗?
  • 其他建议?
  • 最佳答案

  • 公共(public)注册表可以很好地处理多个标签。想想定期发布的 1000 张图像。 docker 客户端和注册表之间不需要标签同步,只需确保您的注册表足够强大以应对。我假设作为您的测试过程的一部分,您会拉下特定的图像和标签?
  • 基础图像总是最好每次都在一个全新的版本之上。它也会加快你的构建时间。
  • 关于jenkins - 为持续交付创建大量 Docker 标签有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443979/

    相关文章:

    nginx - Jenkins:如何在 Nginx 反向代理后面配置 Jenkins 以供 JNLP 从站连接

    maven - 构建 Jenkins 插件时如何获取编译器警告

    node.js - 在Linux服务器上安装chrome浏览器

    docker - 是否有人使用 ubuntu 18.04 在 docker 中使用 gRPC 服务器在微服务中部署了 .NET Core

    Docker 注册表(本地): how to limit the number of unique tags per image?

    docker - 私有(private) docker 注册表的设置通知

    svn - 如何让 Jenkins 构建颠覆存储库的每个修订版

    docker - 如何为每个 Jenkins 图像运行添加内部版本号?

    docker - 如何发布到 docker hub?

    apache - AH01114:HTTP:无法建立与后端的连接:localhost(Apache作为Docker容器)