Harbor简介

Harbor(港口,港湾)是一个用于存储和分发Docker镜像的企业级Registry服务器。

除了Harbor这个私有镜像仓库之外,还有Docker官方提供的Registry。相对Registry,Harbor具有很

多优势:

1. 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以

用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定

传输的对象。

2. 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界

面可以支持登陆、搜索功能,包括区分公有、私有镜像。

3. 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分

解。

4. 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,

具有更好的安全性。

 

Harbor安装

1)先安装Docker并启动Docker, 参考之前的安装过程


vim  /etc/docker/daemon.json

{
"registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"],
"insecure-registry":["192.168.369"]
}

2)先安装docker-compose (下载很慢)

curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

清理harbor镜像 harbor导入镜像_Docker

如果以上2)步骤不正常,就使用一下安装

Docker-compose安装步骤 https://docs.docker.com/compose/install/#install-compose

3)给docker-compose添加执行权限

sudo chmod +x /usr/local/bin/docker-compose

4)查看docker-compose是否安装成功

docker-compose --version

清理harbor镜像 harbor导入镜像_Docker_02

5)下载Harbor的压缩包

yum -y  install wget

wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.3.tgz
下载很慢,文件太大,最终用迅雷下载在传上服务器

6)上传压缩包到linux,并解压

tar -xzf harbor-offline-installer-v1.8.3.tgz
mkdir /opt/harbor
mv harbor/* /opt/harbor/

cd /opt/harbor/

7)修改Harbor的配置

vi harbor.yml

修改hostname和port

hostname: 192.168.66.102

port: 85

清理harbor镜像 harbor导入镜像_docker_03

8)安装Harbor

./prepare

./install.sh

清理harbor镜像 harbor导入镜像_docker_04

9)启动Harbor

docker-compose up -d 启动

docker-compose stop 停止

docker-compose restart 重新启动

10)访问Harbor

http://192.168.3.69:85

默认账户密码:admin/Harbor12345

清理harbor镜像 harbor导入镜像_Docker_05

在Harbor创建用户和项目

1)创建项目

Harbor的项目分为公开和私有的:

公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。

私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。

我们可以为微服务项目创建一个新的项目:

清理harbor镜像 harbor导入镜像_清理harbor镜像_06

 

清理harbor镜像 harbor导入镜像_清理harbor镜像_07

2)创建用户

清理harbor镜像 harbor导入镜像_服务器_08

3)给私有项目分配用户

进入test项目->成员

清理harbor镜像 harbor导入镜像_服务器_09

 

清理harbor镜像 harbor导入镜像_服务器_10

清理harbor镜像 harbor导入镜像_Docker_11

 

4)以新用户登录Harbor

清理harbor镜像 harbor导入镜像_Docker_12

 

把镜像上传到Harbor

比如我是在192.168.3.89这台机构建镜像的,那以下操作都在3.89这台机器

清理harbor镜像 harbor导入镜像_docker_13

1)给镜像打上标签

docker tag proa 192.168.3.69:85/test/proa:v1

2)推送镜像

docker push 192.168.3.69:85/test/proa:v1

这时会出现报错,是因为Docker没有把Harbor加入信任列表中 </DI< div>

清理harbor镜像 harbor导入镜像_服务器_14

3)把Harbor地址加入到Docker信任列表(是在本机,不是harbor3.69服务器上)

vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.3.69:85"]
}

清理harbor镜像 harbor导入镜像_Docker_15

需要重启Docker

systemctl   restart  docker

4)再次执行推送命令,会提示权限不足

denied: requested access to the resource is denied

需要先登录Harbor,再推送镜像

5)登录Harbor

docker login -u casts -p 1989.coM 192.168.3.69:85

docker push 192.168.3.69:85/test/proa:v1

清理harbor镜像 harbor导入镜像_Docker_16

清理harbor镜像 harbor导入镜像_清理harbor镜像_17

 

从Harbor下载镜像(也以3.89作为客户机)

提示:基本和上传操作一样

1)安装Docker,并启动Docker(已经完成)

2)把Harbor地址加入到Docker信任列表(是在本机,不是harbor3.69服务器上)

vi /etc/docker/daemon.json 
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.3.69:85"]
}

需要重启Docker

systemctl   restart  docker

 

3)登录Harbor

docker login -u casts -p 1989.coM 192.168.3.69:85

docker pull 192.168.3.69:85/test/proa:v1