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