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)关注我们。

GitLab容器注册服务已集成于Docker容器相关推荐

  1. 服务计算作业:Docker 容器技术

    Docker实践:CaaS 服务计算作业:Docker 容器技术 准备docker环境(win10) 运行第一个容器:hello-world 运行镜像 显示本地镜像库内容 Mysql安装 构建镜像并运 ...

  2. 微服务项目部署在docker容器运行

    昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...

  3. Docker新手教程(03)进入已创建的Docker容器并执行bash命令

    03.进入已创建的Docker容器并执行bash命令 1.情况描述 我们会遇见这样一种情况,一个Docker容器执行一段时间后,出错了,这个时候我们需要查看到底是因为什么原因出错. 正常情况,我们进入 ...

  4. Docker容器中GUI软件的远程图形界面交互:mobaXterm+SSH,以脑影像处理软件FSL为例;FSL6.0.3完整安装与可视化;docker容器图形化;远程登录docker容器;

    前言   对docker容器中软件的操作,是基于命令行的,这就导致了习惯图形化界面的人比较难以使用docker,而它又是一个神器,所以很难受.一般情况下,可以给容器安装一个桌面环境,然后用类似VNC的 ...

  5. docker配置容器mysql启动参数_修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  6. 如何检查服务已在依赖注入容器中注册

    前言 依赖关系注入(DI),是一种在类及其依赖项之间实现控制反转(IoC)的技术.在ASP.NET Core中,依赖关系注入是"一等公民",被大量使用. 但是有时,我们仅仅只需要知 ...

  7. 通过 Azure Pipelines 实现持续集成之docker容器化

    Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的好消息,在 Github 的 Marketplace 里有个 Azure Pipel ...

  8. 自动化集成:Docker容器入门简介

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...

  9. Docker容器 - DockerFile发布Java微服务并部署到Docker容器

    目录 通过idea新建一个普通微服务项目 一.新建项目 二.POM 三.YML 四.启动类 五.Controller类 启动 通过Dockerfile发布微服务部署到docker容器 一.通过idea ...

最新文章

  1. Json 学习 JSONObject 和 JSONArray
  2. Product Backlog:终极任务清单
  3. SpringBoot启动类的扫描注解的用法及冲突原则
  4. ebpf 学习-bpftrace 语法 入门
  5. 【教程】Linux DNS 服务器安装、配置及维护
  6. input python_Python input 使用
  7. 生产环境可以用吗_小型熔喷布设备可以生产出好的熔喷布吗?
  8. sulin Python3.6爬虫+Djiago2.0+Mysql --实例demo
  9. 纯CSS3文字Loading动画特效
  10. 史上最全的HTML和CSS标签常用命名规则
  11. python设计模式之享元模式
  12. iis6 去掉index.php,iis6如何隐藏index.php
  13. 【拓扑排序】排队-C++
  14. memcpy和strcpy函数
  15. c++ post请求_Golang GinWeb框架5绑定请求字符串/URI/请求头/复选框/表单类型
  16. GARFIELD@12-12-2004
  17. 2.SRE:Google运维解密 --- Google 生产环境:SRE 视角
  18. 【转】SVN ——开放源代码的版本控制系统
  19. AI智能语音识别算法原理 四
  20. python 减法函数_python之函数

热门文章

  1. ADO.NET Entity Framework 学习(1)
  2. 总结这周学习的css的知识
  3. Android AsyncTask Download
  4. 正式开通我的开源博客
  5. 无线网络安全认证[AD+Radius+CA]配置
  6. SQLserver 事务日志已满解决方法
  7. 从绝望中寻找希望,人生必将辉煌
  8. [C++]头文件(Header Files)和命名空间(Namespace)
  9. 问题十三:怎么用ray tracing画个球
  10. 大数据分析有几种方法