@liuhui0803
2016-05-25T09:02:04.000000Z
字数 3649
阅读 3516
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的工作流的主要组件,其中包含运行应用程序所需的一切。在持续集成过程中,映像通常是自动创建的,这样当代码有改动时便可自动更新映像。如果构建了在开发者和计算机之间共享的映像,则需要将映像存储在某个位置,此时就需要用到容器注册服务。
注册服务可以存储映像并为其添加标签,以供后续使用。开发者可能需要为公司专用的私密映像,或只在测试过程中使用的“即抛型”映像创建自己的注册服务。使用GitLab容器注册服务意味着无需再设置和管理其它服务,也无需使用公开的注册服务。
GitLab容器注册服务可完整集成于GitLab,开发者可以通过GitLab CI或其他可兼容Docker的工具更轻松地编码、测试,并部署Docker容器映像。
GitLab容器注册服务是无缝且安全的。下列示例说明了GitLab容器注册服务如何简化您的开发和部署工作流:
首先请联系系统管理员,按照管理文档的介绍启用GitLab容器注册服务。
随后即可为您的项目启用Container Registry。
若要开始使用新增的Container Registry,首先需要登录:
docker login registry.example.com
随后即可轻松构建映像,并将其推送至GitLab:
docker build -t registry.example.com/group/project .
docker push registry.example.com/group/project
GitLab还提供了简单的容器注册服务管理功能。打开项目并点击Container Registry,就可以看到仓库中的所有标签,并可轻松删除这些标签。
详情请参阅GitLab容器注册服务用户指南。
您可以使用GitLab的集成式CI解决方案构建、推送、部署您的容器映像。
注意 : 该功能要求具备GitLab Runner 1.2。
注意 : 为了在Docker映像中使用Docker,您需要在Runner的配置中设置
privileged
标记。目前GitLab.com提供的共享Runner并没有设置该标记,我们计划在下周启用该功能。目前您只能使用自己的Runner。
下面是GitLab CI配置文件(.gitlab-ci.yml
)的一个范例,该配置文件可构建一个映像,运行测试,如果测试成功,可对该构建添加标签,并将其上传至容器注册服务:
build_image:
image: docker:git
services:
- docker:dind
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com
- docker build -t registry.example.com/my-group/my-project .
- docker run registry.example.com/my-group/my-project /script/to/run/tests
- docker push registry.example.com/my-group/my-project:latest
only:
- master
下面是一个更详细的范例,将上述任务拆分成4个步骤,包括并行运行的两个测试。该构建存储在容器注册服务中,后续步骤将会使用这个构建,并在需要时自动下载映像。对master
的改动会被标记为latest
,并使用特定应用程序所设置的部署脚本进行部署:
image: docker:git
services:
- docker:dind
stages:
- build
- test
- release
- deploy
variables:
CONTAINER_TEST_IMAGE: registry.example.com/my-group/my-project:$CI_BUILD_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.example.com/my-group/my-project:latest
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com
build:
stage: build
script:
- docker build -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
test1:
stage: test
script:
- docker run $CONTAINER_TEST_IMAGE /script/to/run/tests
test2:
stage: test
script:
- docker run $CONTAINER_TEST_IMAGE /script/to/run/another/test
release-image:
stage: release
script:
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
deploy:
stage: deploy
script:
- ./deploy.sh
only:
- 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