> ## Content Index
> Fetch the complete content index at: https://lucent.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 搭建Harbor镜像仓库
- URL: https://lucent.blog/da-jian-harborjing-xiang-cang-ku/
- Published: 2021-11-17T08:13:30.000Z
- Updated: 2023-11-14T02:30:13.000Z
- Author: Lucent
- Tags: Docker

### 一、Harbor简介

- 虽然Docker官方提供了公共的镜像仓库，但是从安全和效率等方面考虑，部署我们私有环境内的Registry也是非常必要的。
- Harbor是由VMware公司开源的企业级的Docker Registry管理项目，相比docker官方拥有更丰富的权限权利和完善的架构设计，适用大规模docker集群部署提供仓库服务。
- 它主要提供 Dcoker Registry 管理界面UI，可基于角色访问控制,镜像复制， AD/LDAP 集成，日志审核等功能，完全的支持中文。

### 二、Harbor安装

**首先需要确保已经安装了docker和docker compose**

#### 1.下载安装包

下载最新版离线安装包即可，地址：[https://github.com/goharbor/harbor/releases](https://github.com/goharbor/harbor/releases?ref=lucent.blog)

![image-20210527120844177](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527120844177.png)

下载后拷贝到服务器，并解压

```shell
tar -zvxf xxx.tgz

```

#### 2.加载离线镜像

进入解压后到harbor目录

```shell
#进入目录
cd harbor
#加载镜像
docker load -i harbor.v2.2.2.tar.gz

```

#### 3.修改配置文件

```shell
#复制一份出来
cp harbor.yml.tmpl harbor.yml
#修改
vi harbor.yml

```

![image-20210527121548731](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527121548731.png)

- hostname修改为本机ip，也可以用域名
- port按需修改
- harbor\_admin\_password 是admin账号的密码
- https的相关配置注释掉即可，可以直接在nginx上配置https

#### 4.开始安装

```shell
#按顺序执行
./prepare
./install.sh

```

等待一会儿，安装程序会提示安装成功！

#### 5.使用

在harbor目录下可以通过`docker-compose stop/start`来控制harbor的启动和关闭

浏览器打开 ip：端口，即可进入harbor,账号admin，密码是写在配置文件里的

![](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/EzfMRb.png)

进入后创建一个项目

![image-20210527122457066](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527122457066.png)

进入项目后可以看到推送进来的镜像

![](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/fDVwky.png)

我们可以使用命令向仓库推送打包好的镜像

#### 6.命令推送镜像

打开终端/cmd，登陆harbor

```shell
docker login -u lucent -p Xhm5201314 10.1.120.144:90

```

![image-20210527123740191](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527123740191.png)

查看打包好的镜像

```shell
docker images

```

![image-20210527123848770](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527123848770.png)

标记本地镜像，以pce-job为例

```shell
docker tag pce-job:latest 10.1.120.144:90/pce/pce-job:latest

```

标记后的结果

![image-20210527124151715](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527124151715.png)

将标记好的镜像推送到私有仓库

```shell
docker push 10.1.120.144:90/pce/pce-job:latest #push后面的内容就是刚刚标记好的镜像名字，如上图

```

![image-20210527124401642](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527124401642.png)

这样就推送到仓库了，可以在网页看到

![image-20210527124444864](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527124444864.png)

![image-20210527124504549](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527124504549.png)

#### 7.图形界面

**idea中可以使用图形界面完成上面操作**

首先需要设置仓库

![image-20210527125354869](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527125354869.png)

然后选择镜像

![image-20210527125509453](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527125509453.png)

右键选择push image

![image-20210527125547628](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527125547628.png)

填入信息

![image-20210527125735987](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527125735987.png)

点击ok即可

![image-20210527125811574](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527125811574.png)

**上传镜像的方式有很多种，可自行选择**

### 三、注意

**在测试环境或者没有启用https的情况下，客户端在与harbor交互的时候会报错。**

- 客户端指的是所有需要与仓库产生交互的机器，比如你的电脑或部署项目的服务器
- 交互是指 docker login、docker pull、docker push这类操作
- 原因是docker在某个版本之后默认了客户端与仓库之间的通信是https

#### **解决方法：修改docker配置，允许HTTP**

在daemon.json中加上如下内容

```json
{
  "insecure-registries": ["10.1.120.144:90"]
}
#这里的ip和端口要根据实际情况设置，json格式一定要正确，空格不能多也不能少，否则docker启动报错

```

##### **linux：**

```shell
#编辑daemon.json,并将上面内容复制进去
vi /etc/docker/daemon.json
#重载配置，重启docker
systemctl daemon-reload 
systemctl restart docker
#进入harbor文件夹，启动harbor
docker-compose start

```

##### mac/windows

个人电脑上也存在daemon.json这个文件，如果你是通过docker desktop安装的docker，

只需要通过该软件的设置进行修改即可

![image-20210527134543808](https://img-1251540275.cos.ap-shanghai.myqcloud.com/uPic/image-20210527134543808.png)

如果是其他方式安装的。。。自己找找在哪吧，建议官网下载安装。