概念:
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 的形式收集其他容器的日志
环境:
docker
centos7
关闭selinux和防火墙
搭建:
1.安装compose
[root@192 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.201 netmask 255.255.255.0 broadcast 192.168.2.255
下载 若有此文件 移动至/usr/local/bin/目录即可
[root@192 ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#授权
[root@192 ~]# chmod a+x /usr/local/bin/docker-compose
2.配置daemon.json
[root@192 ~]# vim /etc/docker/daemon.json
#添加域名字段,逗号分隔
{
"insecure-registries": ["hub.qj2021.com"]
}
3.拉取harbor
#若有此文件移入虚拟机解压
[root@k8s-master01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-offline-installer-v2.1.2.tgz
#解压harbor包
[root@192 ~]# tar -xvzf harbor-offline-installer-v2.1.2.tgz
#openssl 认证
[root@192 ~]# mkdir cert
[root@192 ~]# cd cert/
[root@192 cert]# openssl genrsa -des3 -out server.key 2048
[root@192 cert]# openssl req -new -key server.key -out server.csr
Common Name (eg, your name or your server's hostname) []:hub.qj2021.com
##回退
[root@192 cert]# cp server.key server.key.org
[root@192 cert]# openssl rsa -in server.key.org -out server.key
[root@192 cert]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
[root@192 cert]# ls
server.crt server.csr server.key server.key.org
[root@192 harbor]# vim /etc/docker/daemon.json
#配置harbor.yml
[root@192 ~]# cd harbor
#安装 harbor.yml、install.sh 文件 ,管理
[root@192 harbor]# ls
common.sh harbor.v2.1.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
[root@192 harbor]# cp -a harbor.yml.tmpl harbor.yml
5 hostname: hub.qj2021.com
17 certificate: /root/cert/server.crt
18 private_key: /root/cert/server.key
34 harbor_admin_password: admin
#执行install.sh
[root@192 harbor]# ./install.sh
#docker-compose.yml 用来管理harbor
#重启
[root@192 harbor]# ls
common common.sh docker-compose.yml harbor.v2.1.2.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare
[root@192 harbor]# docker-compose up -d 启动
[root@192 harbor]# systemctl daemon-reload
[root@192 harbor]# systemctl restart docker
[root@192 harbor]# docker-compose stop
[root@192 harbor]# docker-compose start
4.配置hosts文件
C:\Windows\System32\drivers\etc\hosts
192.168.2.201 hub.qj2021.com
5.访问测试
https://hub.qj2021.com
6.上传测试
[root@master1 ~]# docker run hello-world
[root@master1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
#打标签,安上图指定格式
[root@master1 ~]# docker tag hello-world:latest hub.qj2021.com/harbor_qujian6675/hello-world:1.0
#上传需要先登录
[root@master1 ~]# docker login hub.qj2021.com
#上传
[root@master1 ~]# docker push hub.qj2021.com/harbor_qujian6675/hello-world:1.0
#推出登录
[root@master1 ~]# docker logout hub.qj2021.com
7.下载测试
#删除之前的镜像
[root@master1 ~]# docker rmi hub.qj2021.com/harbor_qujian6675/hello-world:1.0
#下载不需要登录
[root@master1 ~]# docker pull hub.qj2021.com/harbor_qujian6675/hello-world:1.0
[root@master1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.qj2021.com/harbor_qujian6675/hello-world 1.0 d1165f221234 4 months ago 13.3kB