[关闭]
@liuhui0803 2016-05-25T01:02:04.000000Z 字数 3649 阅读 3348

GitLab推出容器注册服务

Docker 容器 GitLab


负责审校和发布的编辑请注意:本文采用 CC BY-SA 方式许可,可直接使用。发布时请将这句话删除。

昨天我们发布了GitLab 8.8,这是GitLab内建的一款功能强大的持续集成服务。借助该工具,我们可以在GitLab中构建管线,对软件生命周期内构建、测试、部署,以及任何其他阶段实现可视化。今天(通过GitLab 8.8)我们进一步发布了GitLab容器注册(Container Registry)服务。

GitLab容器注册服务是一种安全私密的Docker映像注册服务。以开源软件为基础提供的GitLab容器注册服务不仅是一个独立的注册服务,而且能与GitLab实现全面的集成。

GitLab致力于提供单一的集成式体验,此次发布的注册服务也不例外。现在用户可以更轻松地使用自己的映像实现GitLab CI,为不同标签或分支创建专用映像,或执行其他操作。

我们的容器注册服务实际上是首个能与Git仓库管理机制完整集成的Docker注册服务,在GitLab 8.8 中拆箱即用。因此已经升级至8.8版的用户已经可以开始使用该服务!这意味着无需额外安装即可使用。用户可以轻松地从GitLab CI中上传和下载映像。该服务是免费的。

若要详细了解如何在GitLab实例中启用该功能,请阅读管理文档

Docker基础知识

映像是基于Docker的工作流的主要组件,其中包含运行应用程序所需的一切。在持续集成过程中,映像通常是自动创建的,这样当代码有改动时便可自动更新映像。如果构建了在开发者和计算机之间共享的映像,则需要将映像存储在某个位置,此时就需要用到容器注册服务。

注册服务可以存储映像并为其添加标签,以供后续使用。开发者可能需要为公司专用的私密映像,或只在测试过程中使用的“即抛型”映像创建自己的注册服务。使用GitLab容器注册服务意味着无需再设置和管理其它服务,也无需使用公开的注册服务。

紧密集成

GitLab容器注册服务可完整集成于GitLab,开发者可以通过GitLab CI或其他可兼容Docker的工具更轻松地编码、测试,并部署Docker容器映像。

简化工作流

GitLab容器注册服务是无缝且安全的。下列示例说明了GitLab容器注册服务如何简化您的开发和部署工作流:

开始使用

首先请联系系统管理员,按照管理文档的介绍启用GitLab容器注册服务。

随后即可为您的项目启用Container Registry

此处输入图片的描述

若要开始使用新增的Container Registry,首先需要登录:

  1. docker login registry.example.com

随后即可轻松构建映像,并将其推送至GitLab:

  1. docker build -t registry.example.com/group/project .
  2. docker push registry.example.com/group/project

GitLab还提供了简单的容器注册服务管理功能。打开项目并点击Container Registry,就可以看到仓库中的所有标签,并可轻松删除这些标签。

此处输入图片的描述

详情请参阅GitLab容器注册服务用户指南

与GitLab CI配合使用

您可以使用GitLab的集成式CI解决方案构建、推送、部署您的容器映像。

注意该功能要求具备GitLab Runner 1.2。

注意为了在Docker映像中使用Docker,您需要在Runner的配置中设置 privileged标记。目前GitLab.com提供的共享Runner并没有设置该标记,我们计划在下周启用该功能。目前您只能使用自己的Runner。

下面是GitLab CI配置文件(.gitlab-ci.yml)的一个范例,该配置文件可构建一个映像,运行测试,如果测试成功,可对该构建添加标签,并将其上传至容器注册服务:

  1. build_image:
  2. image: docker:git
  3. services:
  4. - docker:dind
  5. script:
  6. - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com
  7. - docker build -t registry.example.com/my-group/my-project .
  8. - docker run registry.example.com/my-group/my-project /script/to/run/tests
  9. - docker push registry.example.com/my-group/my-project:latest
  10. only:
  11. - master

下面是一个更详细的范例,将上述任务拆分成4个步骤,包括并行运行的两个测试。该构建存储在容器注册服务中,后续步骤将会使用这个构建,并在需要时自动下载映像。对master的改动会被标记为latest,并使用特定应用程序所设置的部署脚本进行部署:

  1. image: docker:git
  2. services:
  3. - docker:dind
  4. stages:
  5. - build
  6. - test
  7. - release
  8. - deploy
  9. variables:
  10. CONTAINER_TEST_IMAGE: registry.example.com/my-group/my-project:$CI_BUILD_REF_NAME
  11. CONTAINER_RELEASE_IMAGE: registry.example.com/my-group/my-project:latest
  12. before_script:
  13. - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com
  14. build:
  15. stage: build
  16. script:
  17. - docker build -t $CONTAINER_TEST_IMAGE .
  18. - docker push $CONTAINER_TEST_IMAGE
  19. test1:
  20. stage: test
  21. script:
  22. - docker run $CONTAINER_TEST_IMAGE /script/to/run/tests
  23. test2:
  24. stage: test
  25. script:
  26. - docker run $CONTAINER_TEST_IMAGE /script/to/run/another/test
  27. release-image:
  28. stage: release
  29. script:
  30. - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
  31. - docker push $CONTAINER_RELEASE_IMAGE
  32. only:
  33. - master
  34. deploy:
  35. stage: deploy
  36. script:
  37. - ./deploy.sh
  38. only:
  39. - master

总结

GitLab容器注册服务是GitLab集成式软件开发生命周期工具最新增加的一个功能,已包含在GitLab 8.8以及更新版本中。借助GitLab容器注册服务,Docker容器的测试和部署工作变得前所未有的简单。GitLab容器注册服务可在用户本地环境中通过GitLab CE和GitLab EE免费使用,可与其他GitLab实例安装在同一个基础结构内。

GitLab.com已经启用了容器注册服务,该服务是完全免费的,您可以立刻开始使用!

注意为了在Docker映像中使用Docker,您需要在Runner的配置中设置privileged标记。目前GitLab.com提供的共享Runner并没有设置该标记,我们计划在下周启用该功能。目前您只能使用自己的Runner。

作者:Mark Pundsack
阅读英文原文GitLab Container Registry

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注