写点什么

GitLab 容器注册服务已集成于 Docker 容器

2016 年 5 月 29 日

GitLab 最近发布了集成式Docker 容器注册(Container registry)服务,该服务由GitLab 工程师Mark Pundsack 开发,主要可用于将Docker 容器映像与GitLab 的持续集成工具相集成。

通过使用GitLab CI,开发者已经可以真正用自动化的方式构建和测试Docker 容器映像,并将其部署至GitLab 容器注册服务,随后这些映像可被其他开发者方便地使用。下文列出了GitLab CI 的一个配置文件范例,该配置可以构建映像,运行测试,如果测试成功还可为该构建创建标签,并将其推送至GitLab 集成式仓库:

复制代码
build_image:
image: docker:git
services:
- docker:dind
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.com:5005
- docker build -t my-group/my-project .
- docker run my-group/my-project /script/to/run/tests
- docker tag my-group/my-project
gitlab.com:5005/my-group/my-project:latest
- docker push gitlab.com:5005/my-group/my-project:latest
only:
- master

根据 Pundsack 的介绍,使用 GitLab 容器注册服务的主要好处在于,无需设置和管理其它服务或使用公用注册服务便可随时使用。这也意味着,例如:

  • GitLab 注册服务需要使用 GitLab 的身份验证机制,因此可继续使用用户和组定义。
  • 无需在注册服务中创建仓库,一切早已设置完毕。
  • 无需额外安装其他软件。

GitLab 容器注册服务可通过一个新选项卡访问,其中列出了与当前项目有关的所有映像。容器注册服务默认会为每个项目启用,开发者可以使用自己的私有仓库,同时还可针对具体项目将其关闭。该服务可通过 GitLab.com 免费使用并创建无限数量的项目,同时也可在本地安装使用。

为了详细了解 Docker 和 GitLab 容器注册服务能为开发者提供怎样的帮助,InfoQ 采访了 GitLab 产品主管 Mark Pundsack。

能否详细谈谈 GitLab 容器注册服务能为开发者提供怎样的帮助?

具体帮助分为两个方面:1) 容器注册这个概念本身,以及 2)GitLab 的集成式容器注册服务。

容器注册服务非常适合各种开发者工作流的分享和自动化。例如,将映像推送至容器注册服务之后,团队中的每个人(如果是私有服务)或有需要的任何人(如果是公开服务)都可以从中下载映像,或为您的软件构建一个完整版本。此时并不需要自行下载源代码并编译,只要抓取一个完整映像即可。但实际上抓取的并不仅仅是包含编译后代码的映像,而是包含完整操作系统版本以及其他依赖工具完整环境的映像,运行软件所需的一切均包含在内,无论在笔记本或云实例中软件都能无差异完美运行。

为了让一切保持无缝,GitLab 已将容器注册服务集成于整个 GitLab 工作流中。用户只需要管理一套用户身份和一个标准化的项目。在连接到注册服务后即可访问全部有权访问的映像。对于企业本地部署的用户来说,更重要的是完全无需额外安装或维护任何其他软件。

在 Docker 与工作流相集成方面有几个新兴实践。其中三大常见领域包括:1) 在 Docker 之外构建并测试一切,随后为最终结果创建 Docker 映像,以及 2) 构建 Docker 映像,随后对其进行测试,还有 3) 构建 Docker 映像,对其本身进行测试,然后使用 Docker-compose 同时运行多个映像并进行集成式测试,借此了解不同组件的交互方式。最后一种情况非常适合使用微服务的组织。

您觉得 GitLab 容器注册服务在哪些领域能提供最大收益?

Docker 的主要优势之一在于能够将同一个映像用于开发、测试,以及部署。这种做法可有效避免应用发布到生产环境后突然发现环境存在差异,底层操作系统或其他工具版本不兼容等情况造成的麻烦。例如,很多开发者会在 Mac 上编写代码,随后将其发布到生产环境中的 Linux 系统。大部分情况下这样做没什么问题,但偶尔总会遇到一些麻烦。为确保开发和生产环境尽可能相似,非常重视站点可靠性的组织甚至提出了“dev-prod 对等”这一概念。

Docker 擅长的另一个领域是微服务,Dockers 在设计上可以处理并协调多个服务。在使用 Docker 之前,如果开发者需要测试一个包含五个组件的系统,可能需要非常繁琐的操作才能在自己的笔记本上搭建本地环境。但 Docker,尤其是 Docker-compose 使得整个过程变得大为简单。

容器注册服务是让这一切圆满实现的中心。

相比使用 Docker Hub 等其他第三方 Docker 注册服务,集成式容器注册服务有何优势?

最明显的优势是成本和便利性。运行容器注册服务无需额外支付任何费用(可创建供个人或企业使用,无限数量的私有项目),并且该服务已经伴随 GitLab 安装完成。集成工作的重点在于要将 GitLab 的身份验证和授权机制集成在一起,并使其与 GitLab 项目的组和成员分配情况保持一致,这样就可以通过注册服务轻松存储私有容器仓库。

举例来说,如果曾用过 Docker Hub,您或者要将自己的项目设置为公用,或者付费将其设置为私有。如果希望像大部分大型企业那样在本地部署,还需要额外付费购买 Docker Trusted Registry。无论哪种方式,都需要手工管理不同用户对映像的协作访问权限。

GitLab 容器注册服务要求具备 GitLab 8.8+ ,并已免费发布至 GitLab.com

查看英文原文: GitLab Container Registry Integrates Docker Containers


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 5 月 29 日 19:002723
用户头像

发布了 283 篇内容, 共 84.7 次阅读, 收获喜欢 34 次。

关注

评论

发布
暂无评论
发现更多内容

做产品少走弯路系列一:上帝视角(1)

我是IT民工

产品 方法论 知识体系 全局观

第一周学习笔记

测试

架构师训练营 - 第一周作业一

teslə

架构师训练营0期第一周学习总结

小高

架构师训练营-第一周学习总结

Eric

极客大学架构师训练营

第一周学习总结

刘卓

架构师训练营-第一章-课程总结

而立

极客大学架构师训练营

架构师第一周学习心得

水蒸蛋

第一周:架构师训练营作业

Bruce Xiong

食堂就餐卡系统总结

薛定谔的🐴

极客大学架构师训练营 UML

就餐卡系统设计文档

qihuajun

架构师如何做架构

Safufu

极客大学架构师训练营

Week1

架构师

食堂就餐卡架构设计

水蒸蛋

架构师训练营作业1:食堂就餐卡系统设计

a晖

食堂就餐卡系统 UML 练习

薛定谔的🐴

UML 部署图 系统用例图 组件图 组件时序图

架构师训练营第一周 个人心得

yanghao

架构第一课作业学习总结

老姜

【架构师训练营】食堂就餐卡系统设计文档

张明森

架构师训练营第一周总结

人世间

Java 极客大学架构师训练营 UML

通过食堂就餐卡系统学习文档编写

薛腾

极客大学架构师训练营

第01周 编写架构设计文档 学习总结

Jaye

极客大学架构师训练营

程序员陪娃系列——学语趣事

孙苏勇

程序员人生 陪伴

架构师训练营 第一周 个人感想

且听且吟

极客大学架构师训练营

第一周学习总结:架构师的产出物

Bruce Xiong

架构设计

架构师

wei

软件建模与设计文档学习总结

qihuajun

架构师训练营 - 第 1 周作业 - 食堂就餐卡系统设计

yanghao

简易就餐卡管理系统设计

elfkingw

极客大学架构师训练营

架构师训练营-第一周作业

Eric

极客大学架构师训练营

食堂就餐卡系统设计

Dennis

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

GitLab容器注册服务已集成于Docker容器-InfoQ