跳转至

[转]用Harbor实现容器镜像仓库的管理和运维


2016-09-02 by dongnan

作者:张海宁

Harbor 简介

Harbor 是由 VMware中国研发团队负责开发的开源 Docker Registry,可帮助用户迅速搭建企业级的 Registry服务。

Docker容器的生命周期

从图中可以看到,容器镜像的关联箭头最多,不言而喻,镜像技术就是容器的核心所在。 概括地说,容器包含一静一动两部分:静态存放的镜像(images)和动态运行的 containers

相应地,容器的开发运维主要涉及镜像管理和运行时(Runtime)管理两部分。本文主要和大家分享的是容器镜像管理的部分。

镜像仓库的权限控制

在企业中,通常有不同的开发团队来负责不同的应用项目,和源代码分项目管理一样,镜像也需要按照项目来存放和管理。 由于团队中有不同的成员,如项目经理、产品经理、开发、测试和运维等人员,每人使用镜像的需求不同,因此可以根据角色分配相应的权限。

例如, 测试人员通常只需要镜像的读权限(pull),开发人员需要读写权限(push/pull), 项目经理除了拥有开发人员的权限之外,还可以增加和删除项目成员,设定他们的角色。

Harbor Registry中,每个项目可有三种角色:项目管理员、开发者和客人。

某些项目,如放在Library中的公共镜像,可以允许匿名访问,即用户不同Docker Login也可以访问,这样可以方便使用。 在整个系统中,还设有系统管理员,具有维护镜像同步策略、用户增删等权限。

需要指出的是,在不同的环境中,某个成员的角色可以不同。例如,在开发环境的Registry中,运维人员一般不需要权限(或需要只读权限);而在生产环境中的Registry,运维人员就需要有读写权限。下图是Harbor的权限管理界面:

镜像远程同步

很多用户在开发、测试和运维中都使用同一个 Registry,这样“简单粗暴”的方式比较适合小团队或简单的项目,其他情况最好使用多个 Registry以区分不同的用途。 如下图,容器镜像管理的参考流程。

  • 开发环境:主要由开发人员使用,镜像变化频繁。当开发完成后,通过CI系统生成稳定镜像,同步到测试Registry
  • 测试环境:主要由测试人员使用,镜像保持不变。当测试通过后,同步到准生产环境的Registry。
  • 准生产环境:主要由测试和运维人员使用,镜像保持不变。当准生产环境试运行后,最后再同步生产环境的Registry。
  • 生产环境:发布镜像到生产环境运行。

从开发到生产的整个过程中,实现容器镜像的 Build-Ship-Run 过程。Harbor可以提供Registry之间的镜像自动同步和复制功能,简化了管理。

镜像删除和空间回收

Docker 命令没有提供 Registry镜像删除功能,日积月累,将会产生许多无用的镜像,占用大量存储空间。 若要删除镜像并回收空间,需要调用docker registry API来完成,比较麻烦。

Harbor提供了可视化的镜像删除界面,可以逻辑删除镜像。在维护状态下可以回收垃圾镜像的空间。

内容转自:用Harbor实现容器镜像仓库的管理和运维

回到页面顶部