Docker私有仓库harbor搭建

本文详细介绍了如何搭建和管理Harbor企业级Docker私有仓库,包括安装Docker和docker-compose,配置Harbor,创建HTTPS证书,上传镜像,以及Harbor的工作原理和特性。Harbor提供基于角色的访问控制、LDAP集成和审计日志等功能,旨在为企业提供安全、高效的镜像管理解决方案。
摘要由CSDN通过智能技术生成

复习

容器创建时需要指定镜像,每个镜像都有唯一的标识ImageID,和容器的Container ID一样,默认128位,可以使用前16为缩略形式,也可以使用镜像名与版本号两部分组合唯一标识,如果省略版本号,默认使用最新版本标签latest

镜像的分层:Docker的镜像通过联合文件系统(Union FileSystem)将各层文件系统叠加在一起

  • bootfs:用于系统引导文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节省内存资源
  • rootfs:位于bootfs之上,表现为Docker容器的根文件系统
    • 传统模式中,系统启动时,内核挂载rootfs时首先挂载为“只读”模式,完整性自检完成后将其挂载为“读写”模式
    • Dokcer中,rootfs有内核挂载为“只读”模式,而后通过UFS技术挂载一个“可写层”
      • 已有分层只能读不能修改
      • 上层镜像优先级大于底层镜像

镜像的生成

  • 容器–>镜像 docker commit
  • dockerfile
    dockerfile时一种被docker程序解释的脚本,dockerfile时由一条一条的指令组成,每条指令对饮linux下面的一条命令。docker程序将这些指定翻译成真正的linux命令。dockerfile有自己的书写格式和支持的命令。docker程序解决这些命令间的依赖关系,类似makefile。docker程序将读取dockerfile。根据指令生成定制的image
    docker build -t 名字 路径

Harbor-企业级Docker私有仓库

安装需求
Python 2.7或更高
Docker引擎 1.10或更高版本
Docker Compose需要1.6.0或更高版本
Harbor官方网址

安装docker-compose

# 下载压缩包docker-compose
 curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# github如果慢的话可以使用daocloud的下载地址
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 添加可执行权限
chmod +x /usr/local/bin/docker-compose

安装Harbor

tar -zxvf harbor-offline-installer-<version>.tgz -C /usr/local/harbor-<version>
  • 配置harbor.cfg

    • hostname:目标的足迹名或者完全限定域名
    • ui_url_protocol:https 默认为http
    • db_password:用于db_auth的MySQL数据库的根密码。
    • max_job_works:作业服务中的复制工作人员的最大数量。默认为3。对于每个映像复制作业,工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工 作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机的硬件资源,仔细选择该属性的值
    • customize_crt:默认on。当此属性打开时,prepare脚本将注册表的令牌的生成/验证创建私钥和根证书
    • ssl_cert:SSL证书的路径,仅当协议设置为https时才应用
    • ssl_cert_key:SSL密钥的路径
    • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径
  • 创建HTTPS证书以及配置相关目录权限

openssl genrsa -des3 out server.key 2038
openssl req -new-key server.key -out server.csr 
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
mkdir /data/cert
chmod -R 777 /data/cert
  • 运行脚本进行安装
    ./install.sh
  • 访问测试
    https://reg.yourdomain.com的管理员门户(将reg.yourdomain.com更改为您的主机名harbor.cfg)。请注意,默认管理员用户名/密码为admin / Harbor12345

上传镜像

  • 指定镜像仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["serverip"]
}
  • 下载测试镜像
docker pull hello-world
  • 给镜像重新打标签
docker tag hello-world serverip/hello-world:tag
  • 登录仓库
docker login serverip
  • 上传镜像
docker push serverip/hello-world:tag
  • 其他docker客户端下载测试
    • 指定镜像仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["serverip"]
}
  • 下载测试镜像
 docker pull serverip/hello-world:tag

Harbor原理介绍

Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control), AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。用于部署Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy ( 即Nginx)的服务端口

  • Proxy:由Nginx服务器构成的反向代理
  • Registry:由Docker官方的开源 registry 镜像构成的容器实例。
  • UI:即架构中的 core services, 构成此容器的代码是 Harbor 项目的主体。
  • MySQL:由官方 MySQL 镜像构成的数据库容器。
  • Log:运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志

Harbor特性

  • 基于角色控制:用户和仓库都是基于项目进行组织的, 而用户基于项目可以拥有不同的权限
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制 c、支持LDAP: Harbor的用户授权可以使用已经存在LDAP用户
  • 镜像删除 & 垃圾回收: Image可以被删除并且回收Image占用的空间,绝大部分的用户操作API, 方便用户对系统进行扩展
  • 用户UI:用户可以轻松的浏览、搜索镜像仓库以及对项目进行管理
  • 轻松的部署功能: Harbor提供了online、offline安装,除此之外还提供了virtualappliance安装
  • Harbor 和 docker registry 关系: Harbor实质上是对 docker registry 做了封装,扩展了自己的业务模块

在这里插入图片描述

Harbor认证过程

  • dockerdaemon从docker registry拉取镜像。
  • 如果dockerregistry需要进行授权时, registry将会返回401 Unauthorized响应,同时在响应中包含了docker client如何进行认证的信息。
  • dockerclient根据registry返回的信息,向auth server发送请求获取认证token。
  • auth server则根据自己的业务实现去验证提交的用户信息是否存符合业务要求。e、用户数据仓库返回用户的相关信息。
  • auth server将会根据查询的用户信息,生成token令牌,以及当前用户所具有的相关权限信息.上述就是完整的授权过程.当用户完成上述过程以后便可以执行相关的pull/push操作。认证信息会每次都带在请求头中
  • 在这里插入图片描述

Harbor认证流程

  • 首先,请求被代理容器监听拦截,并跳转到指定的认证服务器。
  • 如果认证服务器配置了权限认证,则会返回401。通知dockerclient在特定的请求中需要带上一个合法的
    token。而认证的逻辑地址则指向架构图中的core services。
  • 当docker client接受到错误code。client就会发送认证请求(带有用户名和密码)到coreservices进行basic auth认证。
  • 当C的请求发送给ngnix以后, ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core serivces。
  • coreservices获取用户名和密码以后对用户信息进行认证(自己的数据库或者介入LDAP都可以)。成功以后,返回认证成功的信息

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值