私有镜像仓库-harbor

harbor概念和部署

github:  https://github.com/goharbor/harbor

一.介绍

Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。
Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。

二.Harbor核心组件解释

·Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
·db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
·UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
·jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
·Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
·Registry:镜像仓库,负责存储镜像文件。
·Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

三.Harbor和Registry的比较

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1.提供分层传输机制,优化网络传输:Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2.提供WEB界面,优化用户体验:只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3.支持水平扩展集群:当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4.良好的安全机制:企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5.Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

四.Harbor简单部署

1.安装docker并运行
[root@docker1 ~]#yum -y install docker
[root@docker1 ~]#systemctl restart docker
[root@docker1 ~]#systemctl enable docker
2.需要安装docker-compose

A.在线安装
打开官方网站http://get.daocloud.io/#install-compose,找到docker compose,根据下面命令快速安装(能连外网)。

B.离线安装
访问 https://github.com/docker/compose/releases,下载 docker-compose-Linux-x86_64,下载后,将docker-compose-Linux-x86_64移动并改名到/usr/local/bin/docker-compose下。

安装好后命令docker-compose -v 查看

[root@docker1 ~]# docker-compose -v
docker-compose version 1.7.1, build 0a9ab35
3.下载并安装harbor

https://github.com/goharbor/harbor   下载  harbor-offline-installer-v1.5.1.tgz  到  /root/下
1).解压 tar -zxvf harbor-offline-installer-v1.5.1.tgz
2).查看ls

[root@docker1 ~]# ls
harbor-offline-installer-v1.5.1.tgz
[root@docker1 ~]# tar -xf harbor-offline-installer-v1.5.1.tgz
[root@docker1 ~]# ls
harbor harbor-offline-installer-v1.5.1.tgz
[root@docker1 ~]# cd harbor
[root@docker1 ~]# vim harbor.cfg
4.修改配置文件
[root@docker1 harbor]# vim harbor.cfg
A.修改hostname: 为主机IP或者公网地址
hostname = 119.3.212.242
B.支持HTTP访问: customize_crt = false 
5. 运行
[root@docker1 harbor]# ./install.sh //安装出现下面则成功
✔ ----Harbor has been installed and started successfully.----
6.访问验证

查看服务进程:

[root@docker1 harbor]#docker ps

客户端访问公网IP:

http://119.3.212.242

五.上传镜像

1.输入配置文件设置的密码登陆界面,创建项目yan123
2.给镜像打包tag

查看本地仓库

[root@docker1 harbor]#docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest f9b990972689 3 days ago 104 MB
vmware/redis-photon v1.5.1 19245c7a4f51 23 months ago 207 MB

给redis打标签

[root@docker1 harbor]#docker tag vmware/redis-photon:v1.5.1 119.3.212.242/yan123/redis-photon:latest

查看本地仓库

[root@docker1 harbor]#docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
119.3.212.242/yan123/redis-photon latest 19245c7a4f51 23 months ago 207 MB
3.上传push到仓库

修改docker配置:docker 默认是按 https 请求的,由于搭建的私有库是 http 的,所以需要修改 docker 配置,将信任的库的地址写上。

[root@docker1 harbor]# vim /etc/docker/daemon.json
{ "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries": [ "119.3.212.242" ] }

重启服务

[root@docker1 harbor]#systemctl restart docker

验证, 成功登陆

[root@docker1 harbor]#docker login 119.3.212.242
Username (admin): admin
Password:
Login Succeeded

上传到仓库:

[root@docker1 harbor]#docker push 119.3.212.242/yan123/redis-photon:latest
1c02f801c2e8: Layer already exists
3f79efb720fd: Layer already exists
de0fd8aae388: Layer already exists
7844feb13ef3: Pushing [===========================> ] 74.14 MB/76.93 MB
52ef9064d2e4: Pushing [======================> ] 107.3 MB/130 MB
4.浏览器查看:

5.下载到本地

登陆另一台主机,验证是否能下载。
安装软件:

[root@docker2 ]# yum -y install docker

修改客户端的仓库地址:

[root@docker2 ]# vim /etc/sysconfig/docker
ADD_REGISTRY='--add-registry 119.3.212.242'
//harbor默认80端口,默认不写
INSECURE_REGISTRY='--insecure-registry 119.3.212.242'

验证:

[root@docker2 ]#docker login 119.3.212.242

开启服务:

[root@docker2 ]#systemctl start docker 

查看仓库

[root@docker2 ]# docker images 

下载到本地

[root@docker2 ]# docker pull 119.3.212.242/yan123/redis-photon:latest 
Trying to pull repository 119.3.212.242/yan123/redis-photon ...
latest: Pulling from 119.3.212.242/yan123/redis-photon
Digest: sha256:8cb3c7824dabe8fc101ee61387312f50fc2acdb4664f5241cbc0e63f5027db6f
Status: Downloaded newer image for 119.3.212.242/yan123/redis-photon:latest 

最后查看仓库:

[root@docker2 ]# docker images 

评论

  1. yan123
    5年前
    2020-5-24 2:07:49

    测试1

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇