为持续交付创build大量Docker标记是否有任何问题?
目前,我们已经configuration了Jenkins作业来释放我们的服务,其他人则将其部署到testing,阶段和产品。 作为发布工作的一部分,我们创build了一个包含服务二进制文件(及其所有依赖项)的Docker镜像,该镜像被推送到我们的私有Docker存储库(使用新版本创build一个新的标签)。 到目前为止,这很好用,因为从Jenkins部署这个(或者更老的)版本到我们不同的环境很容易,或者只是拉取某个版本的服务并在本地运行。 我的问题是,如果我们转向持续交付,这种方法是否行得通? 我们的想法是,在每次成功构build之后,我们创build一个新的Docker标签并推送到我们的私有仓库,并将镜像部署到testing环境。 我担心的是,如果每天都要做好几次,那么会有很多需要下载的Docker标记/图层。 恐怕随着时间的推移,需要很长时间才能拉下图像(也许还有其他我不知道的问题)?
所以要更清楚地重述这个问题:
- 创build很多Docker标签是好的,还是应该避免的?
- 有一个基本的图像(操作系统等),然后从源代码pipe理系统中的标记build立服务二进制文件,然后build立一个图像,然后转移到不同的环境部署?
- 其他build议?
- 公共registry可以处理多个标签。 想想定期发布的1000张图片。 docker客户端和registry之间不需要标记同步,只要确保您的registry足够强大即可应对。 我假设你的testing过程的一部分,你拉下一个特定的图像和标签?
- 基本的图像总是优于每一次全新的构build。 它也会加快你的构build时间。
Docker Registry v1(python)在标签上缩放非常糟糕。 如果你使用的是分布式文件系统存储后端(比如GCS或者S3),那么这将会特别让你咬牙切齿。 有关上下文,请参阅https://github.com/docker/docker-registry/issues/614 。
现在,新协议(v2)和(golang)registry应该更好。
底线:
- 除了v1协议/registry本身之外,您描述的方法没有任何问题。
- 你应该赌docker1.6(释放候选人)和v2 golangregistry(这是在https://github.com/docker/distribution )
- 在编译Docker Alpine中的qpid-cpp时如何解决`构buildCXX对象src / CMakeFiles / qpidcommon.dir / qpid / sys / posix / Condition.cpp.o`?
- Java版本更新包安装
- Windows数据持久性的Docker – 主机映射与数据卷
- 从私有gilab存储库中提取的Docker容器
- 与Apache不同的Php-Fpm容器
- 在dockerfile中正确设置Perl环境
- Google Kubernetes可以在其上运行Apache Mesos框架吗?
- docker-compose.yml用于elasticsearch和kibana
- 是否有可能直接从AWS lambda中调用docker run