Harbor是由VMWare公司开源的容器镜像仓库。Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更广泛的应用,Harbor被部署为多个Docker容器,因此可以部署在任何支持 Docker 的 Linux发行版上(registry 为其核心组件)。1、Harbor的优势
- 基于角色控制
- 基于镜像的复制策略
- 支持LDAP/AD
- 图像删除和垃圾收集
- 图像UI
- 审计
- RESTful API
https://github.com/goharbor/harbor
harbor的组件
| 组件 | 功能 |
|---|---|
| harbor-adminserver | 配置管理中心 |
| harbor-db | mysql数据库 |
| harbor-jobservice | 负责镜像复制 |
| harbor-log | 记录操作日志 |
| harbor-ui | Web管理界面和API |
| nginx | 前端代理,负责前端页面和镜像上传/下载转发 |
| redis | 会话 |
| registry | 镜像存储 |
- linux主机(例如Centos,redhat,ubuntu等) - docker版本:17.06.0-ce+ - docker-compose版本:1.18.0+ - 服务器硬件要求:最低CPU2核,内存4G,硬盘40G;推荐CPU4核,内存8G,硬盘160G2、安装Docker-compose
下载地址:https://github.com/docker/compose/releases/;选着自己需要的版本。 或者将docker-compose下载到本地然后上传至服务器上。 cp /tmp/docker-compose-Linux-x86_64 /usr/sbin/ # 上传后将其拷贝至可执行命令目录下/usr/sbin chmod +x /usr/sbin/docker-compose-Linux-x86_64 # 附执行权限 ln -s /usr/sbin/docker-compose-Linux-x86_64 /usr/sbin/docker-compose # 对其做软连接 测试;3、安装harbor
下载地址:https://github.com/goharbor/harbor/releases
因为这些是国外网站,直接在linux服务器上下载非常的慢,所以我将七下载到本地,然后再上传到服务器。 同时我也将我下载好的放到了百度网盘,地址:链接:https://pan.baidu.com/s/1rYY0zJOtE5j9MxBhOoHJcA 提取码:44ew01 安装部署
tar -xf harbor-offline-installer-v2.5.0.tgz -C /usr/local # 解压到 /usr/local cd /usr/local/harbor # 进入解压后的目录 cp harbor.yml.tmpl harbor.yml # 拷贝配置文件 vim harbor.yml # 修改配置文件 hostname: 10.1.1.142 # 此处修改为自己的域名或没域名则用服务器IP # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 80 # 此处是http协议的80端口,如果生产使用建议修改为其他端口 # https related config # https: # 此处是https(加密)协议,如果有域名的证书则可以将此处注释打开 # https port for harbor, default is 443 # port: 443 # https协议的端口,有证书需打开此处注释 # The path of cert and key files for nginx # certificate: /your/certificate/path # ssl证书配置路径,需要将其存放证书路径写上,要绝对路径。 # private_key: /your/private/key/path # ssl证书的密钥,需要将其存放密钥的路劲写上,要绝对路径。 harbor_admin_password: Harbor12345 # web服务登录密码,这里可以修改 # Harbor DB configuration database: # 数据库相关配置 # The password for the root user of Harbor DB. Change this before any production use. password: root123 # 数据库密码 # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained. max_idle_conns: 100 # 最大空闲连接 # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections. # Note: the default number of connections is 1024 for postgres of harbor. max_open_conns: 900 # 最大连接 # The default data volume data_volume: /data # 数据目录 location: /var/log/harbor # 日志目录 # 其他不配不是很重要,这里不做过多解释。 ./prepare # 配置文件修改完成后,执行初始化命令
执行安装启动 ./install.sh # 在harbor目录下执行命令 显示这个:✔ ----Harbor has been installed and started successfully.---- 表示安装完成。 查看启动状态:
web方式查看:
harbor默认的推送是https方式:
docker tag nginx_141 10.1.1.142/library/nginx_141:V1
docker push 10.1.1.142/library/nginx_141:V1
此时报错如下:
The push refers to repository [10.1.1.142/library/nginx_141]
Get https://10.1.1.142/v2/: dial tcp 10.1.1.142:443: connect: connection refused
所以我们需要在docker服务上配置http可信任。
[root@k8s3-142 harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"insecure-registries": ["10.1.1.142"], # 这里需要修改为仓库的http地址或域名,如果有多个则需要用","隔开,例如:"insecure-registries": ["10.1.1.142",“10.1.1.141:8000”],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
再次执行推送:
[root@k8s3-142 harbor]# docker push 10.1.1.142/library/nginx_141:V1
The push refers to repository [10.1.1.142/library/nginx_141]
Get http://10.1.1.142/v2/: dial tcp 10.1.1.142:80: connect: connection refused
同样还是拒绝,原因如下:
因重启了docker服务,所以harbor也就关闭,只需要将其打开即可:
docker-compose up -d
再一次推送测试:
错误提示为没有认证,需要登录仓库。 登录后再测试:
再继续测试推送看是否成功:
此时显示以上推送到仓库上。 web界面查看:
如何使用刚刚推送上去的镜像那,那我再10.1.1.141上拉取刚才的镜像(前提141上也需要配置http信任): 先在10.1.1.141上登录:02 添加项目 03 添加用户



