• 工作总结
  • 工作计划
  • 心得体会
  • 领导讲话
  • 发言稿
  • 演讲稿
  • 述职报告
  • 入党申请
  • 党建材料
  • 党课下载
  • 脱贫攻坚
  • 对照材料
  • 主题教育
  • 事迹材料
  • 谈话记录
  • 扫黑除恶
  • 实施方案
  • 自查整改
  • 调查报告
  • 公文范文
  • 思想汇报
  • 当前位置: 雅意学习网 > 文档大全 > 公文范文 > 正文

    基于Harbor,实现Docker,私有仓库搭建的研究

    时间:2023-05-30 16:40:22 来源:雅意学习网 本文已影响 雅意学习网手机站

    程 宁

    (湖北轻工职业技术学院, 湖北 武汉 430070)

    Docker 仓库是Docker 集中存放镜像文件的场所,分为公有仓库和私有仓库两种形式。目前,最大的公有仓库是Docker Hub,存放了数量庞大的镜像供用户下载使用,用户也可上传镜像到公有仓库。国内不少云服务提供商,如时速云、阿里云、百度云等云服务商提供了仓库的本地源,可以提供稳定的国内访问。虽然公有仓库有众多优点,但是也存在一些问题。如公司企业级的私有镜像,由于镜像涉及机密的数据和软件,私密性比较强,因此不太适合放在公有仓库中。此外,出于安全考虑,一些公司不允许公司内网服务器环境访问外网,因此无法下载到公有仓库的镜像[1]。为了解决这些问题,可以根据需要搭建私有仓库,提供私有镜像的上传、下载。对比公有仓库,私有仓库具有安全性和私密性高、访问速度快、自主控制、方便存储和可维护性高的优点。

    常见搭建Docker 私有仓库的方法有利用Registry 和Harbor 两种形式。Registry 是Docker 官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push 到以Registry 起的容器的私有仓库中。对比Registry,Harbor 是一个用于存储和分发Docker 镜像的企业级私有Registry 服务器, 具有基于角色的访问控制, 基于策略的镜像复制,漏洞扫描,LDAP/AD 支持,镜像删除和垃圾收集等强大功能[2]。本文将重点介绍利用Harbor 搭建Docker 私有仓库的方法。

    2.1 Harbor 整体架构(见图1)

    Porxy:对应启动组件nginx,提供nginx 反向代理服务,该代理服务来自浏览器的Docker client 的不同请 求 由Proxy 分 发 到Harbor 的registry、UI、token service 等组件。

    Registry:对应启动组件registry,负责提供Docker镜像的存储,以及处理Docker 的push、pull 等请求。由于Harbor 需要对镜像的访问做权限控制,因此Registry 会将docker client 的每次push、pull 请求转发到token 服务以获取一个有效的token 令牌。

    Job services:对应启动组件harbor-jobservice,主要用于镜像复制,本地镜像可以被同步到远程的Harboar 镜像仓库。

    Log Collector:对应启动组件harbor-log,负责收集其他容器的日志并进行日志轮转。

    Database:对应启动组件harbor-db,负责提供数据持久化服务,用于存放工程元数据、用户数据、角色数据、同步策略以及镜像元数据。

    2.2 Harbor 实现

    Harbor 是通过docker compose 进行部署的,其每一个组件均会被包装成一个Docker 容器,不同容器组件按照以下步骤进行Login 登录和Push 传输处理工程:

    步骤1:客户端发送请求会被监听80 端口的代理容器所接收,容器中的nginx 将会把该请求转发给后端的Registry 容器

    步骤2:如果Registry 容器发现请求中没有携带令牌,会返回一个401 错误码,并将获取令牌URL 的地址传递给Docker 客户端。如请求携带令牌,则转向步骤6。

    内部控制管理体制的不完善,导致高校在招标过程中,缺少必要的监督制度与严格的操作过程以及容易受行政干扰,导致采购的物质质量、价格和售后服务都很难得到保证,极易滋生腐败。另外,高校在物资采购和验收时,存在一人同时负责这两项工作的情况,严重违反分工控制准则。在设备采购后,高校中出现不把新采购设备计入固定资产项目的情况,导致国有资产流失严重。

    步骤3:当Docker 客户端收到401 错误码后,会向token service URL 发送一个嵌入用户名和密码信息的请求。

    步骤4:token service URL 收到请求后,通过解码提取用户名和密码信息,并到数据库中进行核对。

    步骤5:当token service 被配置为LDAP/AD 认证时,token service 会通过外部的服务器来完成认证。如果认证通过,Token 服务会给客户端分发一个令牌,当客户端得到令牌,再次执行Login 登录操作,以完成Login 登录工作。

    步骤6:在收到获得令牌后,Registry 会检验令牌的合法性及有效期,如令牌通过合法性和有效期的检验,则会开启镜像的push 传输过程,并将镜像放入到仓库中。

    本案例选用两台部署在VMware Workstation 15 中的Centos7.2 虚拟机作为宿主机,均已预先安装好Docker,并与外网互通,且关闭防火墙和Selinux 配置[3]。

    1)由于Harbor 需通过Docker 的compose 项目进行部署,因此需要先安装compose,本实验选用docker compose 的版本为1.29.2。

    2)安装openssl 软件包,并配置OpenSSL 工具配置文件openssl.cnf。

    3)签发SSL 证书。

    命令执行后,会成生harbor.crt 和harbor.key 文件,再将生成的私有证书追加到系统的证书管理文件中,否则后面push、login 和pull 时会报错。

    4)安装harbor 仓库,harbor 的安装包为harbor-offline-installer-v1.10.1.tgz。

    进入当前目录下的harbor 目录,编辑harbor.yml配置文件,修改hostname、https 证书路径、admin 密码三个参数信息。

    步骤1:利用docker ps 命令检测容器启动状态,要求所有容器均为“UP”状态。

    步骤2:打开浏览器,地址栏中输入“https://192.168.100.20”,在打开的登录容器中输入正确的用户名和密码后,进行harbor 工作主界面。

    步骤3:创建一个名为test 的项目,设置项目访问权限为“公开”,如下页图2 所示。

    步骤4:利用dockerlogin 命令登录192.168.100.20,输入正确的用户名和密码后,如显示“Login Succeeded“信息,则登录成功。

    步骤5:利用docker tag 命令修改镜像标签后,使用docker push 命令将镜像推送到私有仓库。

    步骤6:在test 项目中可查看到推送的nginx 镜像。如图3 所示。

    步骤7:在客户端上利用docker pull 命令从私有仓库中下载nginx 镜像。

    编辑/etc/docker/daemon.json 文件。

    重启docker 服务后,利用docker pull 命令从私有仓库中下载nginx 镜像,并利用docker image 查看下载的镜像。

    本案例实现了利用harbor 在docker 环境在搭建私有仓库的方法。在实际生产系统中,私有仓库搭建还需考虑高可用性,以解决单点故障的问题,可采用磁盘共享负载均衡分发方案、Harbor 复制同步策略方案和HA 主从方案进行解决。

    猜你喜欢 令牌用户名镜像 《现代临床护理》杂志投稿程序现代临床护理(2022年1期)2022-11-21称金块小猕猴学习画刊·下半月(2022年2期)2022-04-16《护士进修杂志》投稿程序护士进修杂志(2021年21期)2021-12-01镜像当代党员(2020年20期)2020-11-06镜像小康(2018年23期)2018-08-23机智的快递员故事会(2017年17期)2017-09-04巧用凭据管理 自动登录网络电脑爱好者(2015年3期)2015-09-10镜像小康(2015年4期)2015-03-31《道教法印令牌探奥》出版发行中国道教(2001年1期)2001-06-13

    推荐访问:私有 搭建 仓库

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章