docker仓库管理

一、Harbor介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有Registry服务器,Harbor 提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有 Registry 中,确保数据和知识产权在公司内部网络中管控,另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等

vmware 官方开源服务: https://vmware.github.io/

harbor 官方github 地址: https://github.com/vmware/harbor

harbor 官方网址: https://goharbor.io/

harbor 官方文档: https://goharbor.io/docs/

github文档: https://github.com/goharbor/harbor/tree/master/docs

Harbor功能官方介绍

  • 基于角色的访问控制: 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限

  • 镜像复制: 镜像可在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景

  • 图形化用户界面: 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间

  • AD/LDAP 支: Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理

  • 审计管理: 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理

  • 国际化: 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来

  • RESTful API: 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易

  • 部署简单: 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备

Harbor组成

  • Proxy: 对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务

  • UI(Core Service): 对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了 四个子功能:

    • UI: 一个web管理页面ui

    • API: Harbor暴露的API服务

    • Auth: 用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现

    • Token服务(上图中未体现): 负责根据用户在每个project中的role来为每一个docker push/pull命令发布一个token,如果从docker client发送给registry的请求没有带token,registry会重定向请求到token服务创建token

  • Registry: 对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token

  • Admin Service: 对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置

  • Job Sevice: 对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log

  • Log Collector: 对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起

  • DB: 对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据

 Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。 总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。 其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。

二、安装Harbor

下载地址: https://github.com/vmware/harbor/releases

安装文档: https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md

1.安装 docker-compose 工具

cp docker-compose-Linux-x86_64_1.29.1 /usr/bin/docker-compose
chmod +x  /usr/bin/docker-compose
docker-compose version

2.准备 Harbor软件

tar xf  harbor-offline-installer-v1.2.2.tgz 

3.修改Harbor 配置文件

cd harbor/
vim harbor.cfg 

4.安装前准备

如果是快照还原先重启docker,准备配置文件

./prepare 

5.执行安装脚本

执行脚本前将 端口号占用的 清理清理

./install.sh 

docker ps -a

三、web端操作

1.登录

用户名: admin 密码: 之前配置文件中修改的

2.新建项目

3.命令行登录

默认是走https 协议无法登录

 需要修改 service 文件

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.100.140

systemctl daemon-reload
systemctl restart docker
./install.sh
docker login 192.168.100.140

4.测试上传仓库

docker pull nginx
#下载镜像

打上标签

docker tag 605c77e624dd  192.168.100.140/test1/nginx:latest

 上传

docker push 192.168.100.140/test1/nginx:latest

 

posted @ 2024-08-08 15:50  hx_ky36  阅读(2)  评论(0编辑  收藏  举报