简介:
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。
Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。
主要组件:
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命令issuing一个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把日志汇总到一起;
Volnerability Scanning:对应启动组件clair。负责镜像扫描
Notary:对应启动组件notary。负责镜像认证
DB:对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据。
安装harbor1.8:
环境准备:
centos7 内核是3.10的
docker版本不要直接使用yum安装的低版本,需安装较高的版本,我用的是17.09.0-ce
一、配置centos7yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all ; yum makecache
安装扩展源:
yum -y install epel-release
二、安装工具包:
yum install -y yum-utils device-mapper-persistent-data lvm2
三、安装docker:
卸载之前的旧版本:
yum -y remove docker docker-common
1、rpm安装:
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0-ce-1.el7.centos.x86_64.rpm
rpm -ivh docker-ce-17.09.0-ce-1.el7.centos.x86_64.rpm
2、yum安装:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
yum install -y docker-ce-18.09.0-3.el7.x86_64 #你也可以指定具体版本
3、启动docker
systemctl start docker
systemctl enable docker
四、安装Docker-compose:
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
授予执行权限 :chmod +x /usr/local/bin/docker-compose
查看版本:docker-compose --version
五、安装、启动harbor:
wget http://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.5.tgz
tar -xf harbor-offline-installer-v1.8.5.tgz
cd harbor ; vim harbor.yml 修改如下配置:
hostname: 172.20.10.10 #修改成本机的ip或者域名
harbor_admin_password: 123456 #设置harbor登录的密码;其他配置项默认即可。
修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当前目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务,
安装成功会看到:✔ ----Harbor has been installed and started successfully.----
管理命令:docker-compose start | stop | restart
docker-compose down #删除服务(配置不变更时,请勿使用)
docker-compose up -d #创建并启动服务(配置不变更时,请勿使用)
# 注:一般来讲,初始化安装时才会使用这个
六、登录harbor:
浏览器输入配置文件中的ip或者域名访问:
http://172.20.10.10 输入默认用户名admin 密码123456
七、上传下载镜像:
新建项目,test
终端命令登录 docker login 172.20.10.10 输入用户名和密码
登录报错:
Error response from daemon: Get https://172.20.10.10/v2/: dial tcp 172.20.10.10:443: getsockopt: connection refused
排错:
find / -name docker.service -type f
vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd后加上自己的harbor地址(ip或者域名):
ExecStart=/usr/bin/dockerd --insecure-registry 172.20.10.10
systemctl daemon-reload
systemctl restart docker
重启docker后查看docker进程会看到刚才加入的harbor地址:
再进入到harbor目录重启docker-compose,之后用docker-compose ps查看各组件状态为healthy,再登录成功!
上传镜像到harbor:
上传前要修改docker镜像的tag:
docker tag nginx:latest 172.20.10.10/test/nginx:latest #原镜像前加上harbor的地址和项目
docker push 172.20.10.10/test/nginx:latest 上传镜像,后在harbor test项目里查看到即可。
删除本地镜像,再从harbor上拉取:
八、主从harbor同步镜像
搭建另一个harbor平台172.20.10.13,作为从harbor,同步镜像。
拉取镜像:在从harbor仓库管理里新建目标,编辑目标(即主harbor信息:url、访问id等),测试连接。
再同步管理里新建规则,填写源Registry地址,镜像名称、tag等,注意镜像名称是test/nginx,tag是latest。
保存后,选中规则,点击同步;在项目中查看拉取到的镜像即可。push镜像在主harbor上操作类似。
个人博客: https://www.wzstyle.cn/
来源:CSDN
作者:网子世界
链接:https://blog.csdn.net/qq_41918571/article/details/103792818