私有仓库Harbor

  • 一、概述
  • 二、特点
  • 三、Harbor仓库结构
  • 四、部署Harbor
    • 1、环境准备
    • 2、安装harbor
    • 3、修改配置文件
    • 4、启动Harbor
    • 5、登陆Harbor
    • 6、新建项目
    • 7、上传镜像到私库
    • 8、其他主机上传镜像到私库
    • 9、下载镜像
    • 10、新建用户
    • 11、删除镜像
    • 12、停止与启动方式

一、概述

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必须的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户 使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

二、特点

1、基于角色的访问控制—用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

2、镜像复制—镜像可以在多个Registry石磊中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

3、图形化用户界面—用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

4、AD/LDAP支持—Harbor可以继承企业内部已有的AD/LDAP,用于鉴权认证管理。

5、审计管理—所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

6、国际化—已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

7、RESTful API—RESTful API 提供给管理员对于Harbor更多的操控,使得与其它的管理软件集成变得更容易。

8、部署简单—提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

三、Harbor仓库结构

Harbor大概需要以下几个容器组成:

  • ui:Harbor的核心服务
  • log:运行着rsyslog的容器,进行日志收集
  • mysql:由官方mysql镜像构成的数据库容器
  • nginx:使用nginx做反向代理
  • registry:官方的Docker registry
  • adminserver:Harbor的配置数据管理器
  • jobservice:Harbor的任务管理服务
  • redis:用于存储session

四、部署Harbor

1、环境准备

软件:harbor-offline-installer-v1.2.2.tgz

Harbor:192.168.245.209
验证主机:192.168.245.210

注意:Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。

将docker-compose放入/usr/local/bin/目录下,添加执行权限即可

[root@localhost ~]# cd /usr/local/bin/
[root@localhost bin]# chmod +x docker-compose

2、安装harbor

[root@harbor ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# ls
common                    docker-compose.notary.yml  harbor_1_1_0_template  harbor.v1.2.2.tar.gz  LICENSE  prepare
docker-compose.clair.yml  docker-compose.yml         harbor.cfg             install.sh            NOTICE   upgrade
[root@harbor harbor]#

3、修改配置文件

[root@harbor harbor]# vim harbor.cfg 5 hostname = 192.168.245.209
//hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost

4、启动Harbor

修改完配置文件后,在当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务

[root@harbor harbor]# sh install.sh[Step 0]: checking installation environment ...Note: docker version: 19.03.13Note: docker-compose version: 1.21.1
……
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db          ... done
Creating registry           ... done
Creating harbor-adminserver ... done
Creating harbor-ui          ... done
Creating harbor-jobservice  ... done
Creating nginx              ... done✔ ----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at http://192.168.245.209.
For more details, please visit https://github.com/vmware/harbor .

Harbor的所有服务都应该是up状态

[root@harbor harbor]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
0cc23da70eee        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
f261f9d42963        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   2 minutes ago       Up 2 minutes                                                                           harbor-jobservice
053a2d713176        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      2 minutes ago       Up 2 minutes                                                                           harbor-ui
cf14e259e502        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   2 minutes ago       Up 2 minutes        5000/tcp                                                           registry
ada21113ee19        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   2 minutes ago       Up 2 minutes                                                                           harbor-adminserver
ff078a1d03d0        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        3306/tcp                                                           harbor-db
efca0ac37509        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   2 minutes ago       Up 2 minutes        127.0.0.1:1514->514/tcp                                            harbor-log
[root@harbor harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
vmware/harbor-log           v1.2.2              36ef78ae27df        2 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        2 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        2 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        2 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        2 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        3 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        3 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        4 years ago         128MB
[root@harbor harbor]#

如果这里访问不了Harbor的话建议重启下docker,然后重新开启服务

[root@harbor harbor]# systemctl restart docker

5、登陆Harbor

真机验证访问http://192.168.245.209会出现登录界面就成功

由于Harbor的web服务使用了宿主机的80端口,所以在浏览器直接输入宿主机的IP地址即可访问Harbor的web管理页面


账号是admin,密码是前面设置的harbor_admin_password的值(默认是Harbor12345)

6、新建项目


7、上传镜像到私库

使用管理员登陆Harbor服务器

[root@harbor harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

下载一个nginx镜像,重新编辑一个标签,指定名称为127.0.0.1/sheng/nginx,标签为v1

[root@harbor harbor]# docker pull nginx
[root@harbor harbor]# docker tag nginx:latest 127.0.0.1/sheng/nginx:v1
[root@harbor harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/sheng/nginx       v1                  7e4d58f0e5f3        13 days ago         133MB
nginx                       latest              7e4d58f0e5f3        13 days ago         133MB

上传镜像

[root@harbor harbor]# docker push 127.0.0.1/sheng/nginx
The push refers to repository [127.0.0.1/sheng/nginx]
908cf8238301: Pushed
eabfa4cd2d12: Pushed
60c688e8765e: Pushed
f431d0917d41: Pushed
07cab4339852: Pushed
v1: digest: sha256:794275d96b4ab96eeb954728a7bf11156570e8372ecd5ed0cbc7280313a27d19 size: 1362

到网页上去查看sheng的项目下面已经多了我们刚上传的nginx镜像了

8、其他主机上传镜像到私库

在验证主机上用管理员用户登陆到私库

[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.245.209
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.245.209/v2/: dial tcp 192.168.245.209:443: connect: connection refused
[root@localhost ~]#

解决方法:
第一种:

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
[root@localhost ~]# 14 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.245.209 --containerd=/run/containerd/containerd.s    ock[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

第二种:

[root@docker ~]# vim /etc/docker/daemon.json
{"insecure-registries": ["192.168.245.209:5000"]
}

重启docker

[root@docker ~]# systemctl restart docker

再次登录

[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.245.209
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

先拉取一个镜像到本地

[root@localhost ~]# docker pull centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

给镜像重新打个标签

[root@localhost ~]# docker tag centos:7 192.168.245.209/sheng/centos7:v1
[root@localhost ~]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
192.168.245.209/sheng/centos7   v1                  7e6257c9f8d8        6 weeks ago         203MB
centos                          7                   7e6257c9f8d8        6 weeks ago         203MB

上传到私库

[root@localhost ~]# docker push 192.168.245.209/sheng/centos7
The push refers to repository [192.168.245.209/sheng/centos7]
613be09ab3c0: Pushed
v1: digest: sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9 size: 529
[root@localhost ~]#

到网页上验证多了一个centos7镜像

9、下载镜像

在harbor服务器上(其他主机)下载这个镜像,因为私库就在本地,所以要用环回地址

[root@harbor harbor]# docker pull 127.0.0.1/sheng/centos7:v1
v1: Pulling from sheng/centos7
75f829a71a1c: Pull complete
Digest: sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9
Status: Downloaded newer image for 127.0.0.1/sheng/centos7:v1
127.0.0.1/sheng/centos7:v1
[root@harbor harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/sheng/nginx       v1                  7e4d58f0e5f3        13 days ago         133MB
nginx                       latest              7e4d58f0e5f3        13 days ago         133MB
127.0.0.1/sheng/centos7     v1                  7e6257c9f8d8        6 weeks ago         203MB

10、新建用户

在网页上为项目新建一个开发人员用户zhangsan,密码Harbor12345







在主机上以zhangsan登陆,先退出管理员登陆

[root@localhost ~]# docker logout 192.168.245.209
Removing login credentials for 192.168.245.209[root@localhost ~]# docker login 192.168.245.209
Username: zhangsan
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

11、删除镜像

注意:这里删除的是本地的镜像

[root@localhost ~]# docker rmi 192.168.245.209/sheng/centos7:v1
Untagged: 192.168.245.209/sheng/centos7:v1
Untagged: 192.168.245.209/sheng/centos7@sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9
[root@localhost ~]#
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   7e6257c9f8d8        6 weeks ago         203MB

12、停止与启动方式

[root@harbor harbor]# docker-compose down -v   //-v:停止容器的同时删除已经在compose文件中定义的和匿名的附在容器上的数据卷
Stopping nginx              ... done
Stopping harbor-jobservice  ... done
Stopping harbor-ui          ... done
Stopping registry           ... done
Stopping harbor-adminserver ... done
Stopping harbor-db          ... done
Stopping harbor-log         ... done
Removing nginx              ... done
Removing harbor-jobservice  ... done
Removing harbor-ui          ... done
Removing registry           ... done
Removing harbor-adminserver ... done
Removing harbor-db          ... done
Removing harbor-log         ... done
Removing network harbor_harbor
[root@harbor harbor]# docker-compose up -d   //指定在后台以守护进程方式运行服务容器
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registry           ... done
Creating harbor-adminserver ... done
Creating harbor-db          ... done
Creating harbor-ui          ... done
Creating nginx              ... done
Creating harbor-jobservice  ... done

注意:当项目设为公开后,任何人都有此项目下镜像的读权限。命令行用户不需要“docker login”就可以拉取此项目下的镜像。

如果需要修改Harbor的配置文件harbor.cfg,因为Harbor是基于docker-compose服务编排的,我们可以使用docker-compose命令重启Harbor。

部署Docker仓库之企业级私有仓库Harbor相关推荐

  1. Docker 容器仓库之搭建私有仓库、hub仓库

    一.什么是仓库 Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像. Docker运行中使用的默认仓库 ...

  2. docker 查询或获取私有仓库(registry)中的镜像

    docker 查询或获取私有仓库(registry)中的镜像,使用 docker search 192.168.1.8:5000 命令经测试不好使. 解决: 1.获取仓库类的镜像: [root@sha ...

  3. docker仓库——搭建registry私有仓库

    docker仓库 一.什么是仓库 二.docker hub 三.registry工作原理 四.配置镜像加速器 五.搭建私有仓库 1.导入registry镜像 2.添加证书和密钥 3.将证书给docke ...

  4. docker之搭建gitlab私有仓库服务

    简单三步搭建docker之搭建gitlab私有仓库服务 服务配置:1c2g+2g虚拟内存,服务启动大概需要3.x g内存 内存不足可配置虚拟使用--memory=10M --memory-swap=- ...

  5. Docker(仓库)——Docker Hub 公共仓库+企业级私有仓库搭建流程

    目录 一.什么是仓库 二.安装配置Docker Hub 三.配置镜像加速器 四.Registry 工作原理 五.CONTENTS 六.搭建私有仓库 一.什么是仓库 什么是仓库? • Docker 仓库 ...

  6. Docker学习(5)——创建私有仓库,为私有仓库添加web界面

    一.什么是Docker 仓库? 仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多 ...

  7. Docker入门之四搭建私有仓库

    前面学习了下镜像和容器,今天来学习下仓库,来搭建本地私有仓库.当然可以使用远程的共有的仓库,但在企业中有的还是放在本地,所以需要搭建私有仓库. 一.搭建仓库 可以在容器中run一个仓库镜像. dock ...

  8. 【Docker】Registry搭建私有仓库、证书认证、用户登录认证

    一.Docker Registry工作原理 02_Docker Registry角色 Docker Registry有三个角色,分别是index.registry和registry client. i ...

  9. docker怎么登出私有仓库

    要登出私有仓库,需要使用 docker logout 命令. 命令格式为: docker logout [私有仓库地址] 例如,登出 Docker Hub 的私有仓库: docker logout h ...

最新文章

  1. arm linux 识别新硬盘_嵌入式Linux系列第13篇:USB摄像头拍照
  2. 用aspect在springboot中记录操作日志至数据库的详细过程
  3. php操作redis phpredis扩展
  4. html5文件阅读器api,html 5 读取本地文件API
  5. kafka创建topic命令_0748-5.14.4-Kafka的扩容和缩容
  6. VS2017——50G超豪华IDE套餐酸爽体验!
  7. Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)
  8. 前后端分离的思考与实践(四)
  9. 路由器配置vlan桥接
  10. 安全测试工具有哪些?
  11. python设置excel表样式
  12. 【线性代数笔记】矩阵的合同关系
  13. 新学期新FLAG,我与你共青春
  14. 我只会HelloWorld,但是我却完成了一个SpringBoot项目!(1)
  15. mac 阿里云ecs配置php,在Mac OS下配置PHP开发环境
  16. 灰色系统预测模型GM(1,1),GM(1,n)及Matlab实现
  17. PHPWord 导出生成word
  18. 计算机怎么取消用户锁定,电脑屏显已锁定、切换用户,按照这几个步骤操作,即可关闭它...
  19. thinkphp框架配置验证是否登录公共函数的方法
  20. iphone11双卡怎么安装(苹果11门禁卡模拟)

热门文章

  1. swift4.1 系统学习六
  2. 2021考研数学真题大串讲
  3. springboot+vue实现分页操作
  4. 推荐一堆好掂嘅 标头 影嘅东东 (内有靓女,慎入!)
  5. 使用ajax async,Ajax请求async有哪些方式?应该如何使用
  6. 【券商报告】2020Q4中国ETF市场全景回顾:总规模创新高,行业主题类ETF渐成市场新主角——附下载链接
  7. 手机网站开发及手机中图片加速显示img的Canvas方法
  8. Java基础(不定时更新)
  9. Android Training - 避免程序无响应ANR
  10. 疫情之下的保研实录--川大,华科,浙大工学院,西交软院,浙软