Harbor镜像仓库安装及使用

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

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

1. 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以 用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定 传输的对象。

2. 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界 面可以支持登陆、搜索功能,包括区分公有、私有镜像。

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

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

先说坑:

  1.python需2.7+   升级python并且修改/usr/bin下的pip文件,将头部python2改成python3.7(我升级的python为3.7)

  2.安装harbor会出现Need to install docker-compose(1.18.0+) by yourself first and run this script again.

    docker-compose版本需要1.18.0+

    使用我下面的命令安装docker-compose后,运行docker-compose会报指令不存在

    我是去github下载了高版本的docker-compose文件放入/usr/local/bin下。地址:https://github.com/docker/compose/releases

Harbor安装

1.安装Docker并启动Docker

2.安装docker-compose

  sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/dockercompose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

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

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

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

  docker-compose -version

  如果显示docker-compose指令不存在,可以尝试手动下载docker-compose,地址:https://www.cnblogs.com/cw828/p/11970225.html   将docker-compose文件放入/usr/local/bin中,再次执行docker-compose -version

5.下载Harbor的压缩包(版本:v1.9.2)

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

  tar -xzf harbor-offline-installer-v1.9.2.tgz

  mkdir /opt/harbor

  mv harbor/* /opt/harbor

  cd /opt/harbor

7.修改Harbor的配置

  vi harbor.yml

8.修改hostname和port

  hostname: 192.168.66.102

  port: 85

9.安装Harbor

  ./prepare

  ./install.sh

10.启动Har

 docker-compose up -d 启动

 docker-compose stop 停止

 docker-compose restart 重新启动

11.访问Harbor

  ip:85

  默认账户密码:admin/Harbor12345

12.在Harbor创建用户和项目

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

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

 13.创建用户

14.给私有项目分配用户

访客:对于指定项目拥有只读权限

开发人员:对于指定项目拥有读写权限

维护人员:对于指定项目拥有读写权限,创建 Webhooks

项目管理员:除了读写权限,同时拥有用户管理/镜像扫描等管理权限

15(其他服务器)把镜像上传到Harbor

  1)给镜像打上标签

    docker tag zgj:v1 xxxxxx(HarborIP地址):85/zgj/zgj:v1

  2)推送镜像

    docker push xxxxxx(HarborIP地址):85/zgj/zgj:v1

    报错:The push refers to repository [xxxxxx:85/tensquare/eureka] Get https://xxxxxxx:85/v2/: http: server gave HTTP response to HTTPS client

    这时会出现以上报错,是因为Docker没有把Harbor加入信任列表中

  3)把Harbor地址加入到Docker信任列表

    vi /etc/docker/daemon.json

    {

     "registry-mirrors": ["xxxxxx"],//阿里镜像地址

    "insecure-registries": ["xxxxxx(HarborIP地址):85"]

    }

    重启docker!!!

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

    denied: requested access to the resource is denied

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

  5)登录Harbor

    docker login -u 用户名 -p 密码 xxxxxx(HarborIP地址):85

    用户名密码为刚刚设置的harbor用户

    Login Succeeded!!!!!

16.(其他服务器)从Harbor上下载镜像

  1)安装Docker,并启动Docker

  2)修改Docker配置

    vi /etc/docker/daemon.json

    {

     "registry-mirrors": ["xxxxxx"],//阿里镜像地址

    "insecure-registries": ["xxxxxx(HarborIP地址):85"]

    }

    重启docker!!!

  3)先登录,再从Harbor下载镜像

    docker login -u 用户名 -p 密码 xxxxxx(HarborIP地址):85

    docker pull xxxxxx(HarborIP地址):85/zgj/zgj:v1

原文地址:https://www.cnblogs.com/cw828/p/14212525.html