Docker之 Harbor概述及构建

网友投稿 273 2022-10-21

Docker之 Harbor概述及构建

Docker之 Harbor概述及构建

先搭建本地私有仓库

1、下载registry镜像

docker pull registry docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 eeb6ee3f44bd 4 weeks ago 204MB registry latest b2cb11db9d3d 6 weeks ago 26.2MB

2、在daemon.json文件中添加私有仓库地址

vim /etc/docker/daemon.json { "registry-mirrors": ["https://3c7tpzyf.mirror.aliyuncs.com"], "insecure-registries": ["192.168.118.18:5000"] } [root@docker ~]# systemctl restart docker.service

3、运行容器

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latestea1409afd42194b23d2633e244f87a4a0beb97aac989fc0b49ef773a3fbcb546 docker ps -a

-itd 在容器中打开一个伪终端进行交互操作,并在后台运行
-v 把宿主机的/data/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化
-p 映射端口,访问宿主机的5000端口就访问到registry容器的服务了
–restart=always 这是重启的策略,在容器退出时总是重启容器
–name registry 创建容器命名为registry
registry:latest 这个是刚才pull下来的镜像
docker容器重启策略
no 默认策略。在容器退出时不重启容器
no-failure 在容器非正常退出时(退出状态非0),才会重启容器
no-failure:3 在容器非正常退出时重启容器,最多重启3次
always 在容器退出时总是重启容器
unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

4、给镜像打标签

docker tag centos:7 192.168.118.18:5000/centos:test1 docker images

5、上传到私有仓库

docker push 192.168.118.18:5000/centos:test1

6、列出私有仓库所以镜像

curl rmi -f 192.168.118.18:5000/centos:test1 centos:7 docker pull 192.168.118.18:5000/centos:test1 docker images

一、概述 Harbor

1、简介

Harbor 是VMware公司开源的云本地 registry 仓库,有可视化的Web管理界面,可以方便的管理和储存 Docker 镜像。Harbor 支持在多个仓库直接进行复制镜像,提供用户管理和访问控制和活动审计。

2、优势

基于角色控制 基于镜像的复制策略 支持LDAP/AD域,通过VPN连接域使用 图像删除和垃圾收集 图像UI,方便 审计,此功能使用较少,一般企业中用ELK收集、分析日志 RESTful API(用URL定位资源\、用HTTP动词(GET、POST、PUT、DELETE)描述操作)

3、架构

Proxy 通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务
Registry 责存储Docker镜像,并处理docker push/pull命令
Coreservices Harbor的核心功能,包括UI、webhook、token服务
Database 为coreservices提供数据库服务
Log collector 负责收集其他组件的log,供日后进行分析

==过程==:所有的请求都经过proxy代理,proxy代理转发给Core services和Registry,其中Core services包括UI界面、token令牌和webhook网页服务功能,Registry主要提供镜像存储功能。如果要进行下载上传镜像,要经过token令牌验证然后从Registry获取或上传镜像,每一次下载或上传都会生成日志记录,会记入Log collector,而用户身份权限及一些镜像语言信息会被存储在Database中。

二、相关参数

配置文件:/usr/local/harbor/harbor.cfg

1、所需参数

所需参数 (修改此参数后,需要运行 install.sh脚本重新安装 Harbour,参数才会生效。)
hostname 用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限定的域名(FQDN)例如192.168.118100 或test.com。
ui_url_protocol(参数选项:或 http) 用于访问 UI 和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。
max_job_workers 镜像复制作业线程。
db_password 用于db_auth 的MySQL数据库root 用户的密码。
customize_crt 该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。
ssl_cert SSL 证书的路径,仅当协议设置为 时才应用。
secretkey_path 用于在复制策略中加密或解密远程register 密码的密钥路径。不建议配置,有很大的安全隐患

2、可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。 如果进入Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数 的更新,Harbor.cfg 将被忽略。==注意==:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor中创建任何新用户之前设置所需的

可选参数
auth_mode 当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。
Email Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。
harbour_admin_password 管理员的初始密码,只在Harbour第一次启动时生效。默认的用户名/密码是 admin/Harbor12345。
auth_mode 使用的认证类型默认情况下,它是 db_auth
self_registration 启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在Harbour中创建新用户。
Token_expiration 由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。
project_creation_restriction 用于控制哪些用户有权创建项目的标志,表示哪些用户可以创建项目。默认情况下,每个人都可以创建一个项目。
verify_remote_cert 打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。

默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统,如S3、Openstack Swif、Ceph 等。但需要更新common/templates/registry/config.yml 文件。

三、harbor构建

1、构建harbor

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版上。服务端主机需要安装Docker 和 Docker Compose。

安装Docker Compose

curl -L -s`-`uname -m` -o /usr/local/bin/docker-compose cp -p docker-compose /usr/local/bin/ chmod +x /usr/local/bin/docker-compose

下载harbor安装程序

在线下载 wget harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

配置harbor参数文件

vim /usr/local/harbor/harbor.cfg //第5行 hostname = 192.168.118.18

启动harbor

sh /usr/local/harbor/install.sh

查看启动镜像和容器

docker images

检查服务是否开启

cd /usr/local/harbor/ docker-compose ps

去界面创建项目

此时可以打开浏览器访问 http://192.168.118.18的管理页面,默认的管理员用户名和密码是admin/Harbor12345。

去测试(去另一台虚拟机上)

登录 docker login -u admin -p Harbor12345 login -u admin -p Harbor12345 http://192.168.118.18 #-------------------输出内容------------------------------------------ WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get dial tcp 192.168.118.18:443: connect: connection refused

docker pull tomcat docker images docker tag tomcat 192.168.118.18/jichao/tomcat:v2 docker push 192.168.118.18/liuyan/tomcat:v2

然后再回去查看是否成功

2、维护和管理

1、创建harbor用户

再去输入你刚刚创建的姓名

2、在客户端上操作

删除之前打标签的镜像

docker rmi 192.168.118.18/jichao/tomcat:v2 #----------------------输出内容----------------------------- Untagged: 192.168.118.18/testproject/tomcat:v2 Untagged: 192.168.118.18/jichao/tomcat@sha256:a960c08c4beb67e2c2513805cf3e95a4d09f8585a948dd09e04d4245d59c5a91

测试创建的新用户可用不

//注销登录 docker logout 192.168.118.18 #------------------输出内容-------------------------------- Removing login credentials for 192.168.118.18 #-------------------------------------------------------- //使用新创建的用户和密码登录私有仓库 docker login 192.168.118.18 #------------------输出内容------------------------- Username: liuyan Password: //输入密码 WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded #-------------------------------------------------- //从私有仓库下载镜像 docker pull 192.168.118.18/liuyan/nginx:v1 #-----------------------输出内容----------------------------- v1: Pulling from testproject/nginx a076a628af6f: Pull complete 0732ab25fa22: Pull complete d7f36f6fe38f: Pull complete f72584a26f32: Pull complete 7125e4df9063: Pull complete Digest: sha256:0b159cd1ee1203dad901967ac55eee18c24da84ba3be384690304be93538bea8 Status: Downloaded newer image for 192.168.118.18/testproject/nginx:v1 192.168.118.18/testproject/nginx:v1 //查看镜像 docker images #-------------------输出内容--------------------------------- REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 040bdb29ab37 2 months ago 649MB 192.168.163.100/testproject/nginx v1 f6d0b4767a6c 2 months ago 133MB

3、移除harbor服务容器

在harbor服务器上操作

docker-compose down -v Stopping nginx ... done Stopping harbor-jobservice ... done Stopping harbor-ui ... done Stopping registry ... done Stopping harbor-db ... done Stopping harbor-adminserver ... done Stopping harbor-log ... done Removing nginx ... done Removing harbor-jobservice ... done Removing harbor-ui ... done Removing registry ... done Removing harbor-db ... done Removing harbor-adminserver ... done Removing harbor-log ... done Removing network harbor_harbor

如需重新部署,需要移除 Harbor 服务容器全部数据持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下。

rm -rf /data/database/ rm -rf /data/registry/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker容器实战二:功能组件
下一篇:SpringCloud Gateway读取Request Body方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~