转载

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

  英文原文:GitLab Container Registry Integrates Docker Containers

  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。

正文到此结束
Loading...