Harbor仓库搭建
### 一、概述
1. Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,具有web管理功能,操作其实是非常简单易行的
2. 环境准备
Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0
3. 安装并启动docker[docker20.10.4教程](https://zmzycc.top/archives/docker-an-zhuang)
4. 安装docker-compose
```
wget https://github.com/docker/compose/releases/download/v2.17.1/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
```
5. 验证
```
root@zy:/opt# docker-compose --version
Docker Compose version v2.17.1
```
6. Harbor服务搭建及启动
```
#下载离线包(有网络可以下载在线包)
wget https://github.com/goharbor/harbor/releases/download/v2.5.6/harbor-offline-installer-v2.5.6.tgz
tar -zxvf harbor-offline-installer-v2.5.6.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
```

6. 执行部署脚本:./install.sh
----Harbor has been installed and started successfully.---- #出现这个就表示安装成功
7. 现在去访问:http://ip:2000
```
Harbor用户/密码: 用户默认登录账户admin 默认密码是Harbor12345
```

7. 设为开机自启
vim /etc/systemd/system/harbor.service
```
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
```
chmod +x /etc/systemd/system/harbor.service #授权
systemctl enable harbor #开机自启
systemctl start harbor
8. 利用http 上传镜像报以下错误提示和解决
```
#错误提示
docker push 192.168.0.138:2000/webserver/nginx:v1
The push refers to repository [192.168.0.138:2000/webserver/nginx]
Get https://192.168.0.138:2000/v1/: http: server gave HTTP response to HTTPS client
#解决方法
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com", "https://hub-mirror.c.163.com"],
"insecure-registries": ["192.168.0.138:2000"] #添加这行内容,IP地址和端口修改成自己的
}
```
docker推送到Harbor命令
```
1.先登录
docker login 192.168.0.138:2000
2.为镜像打标记
docker tag 镜像名:TAG harbor地址/项目/镜像名:TAG #重命名镜像
3. 推送镜像
docker push harbor地址/项目/镜像名:TAG
```
9. 重启docker服务
systemctl restart docker
10. docker服务重启后,相关harbor容器有可能关闭,需要重启
docker-compose restart