区块链技术博客
www.b2bchain.cn

企业 harbor仓库部署

这篇文章主要介绍了企业 harbor仓库部署的讲解,通过具体代码实例进行18033 讲解,并且分析了企业 harbor仓库部署的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=18033

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

  • Harbor
  • 安装配置
        • 配置
  • 镜像管理
        • 镜像上传
        • 远程主机上传镜像
        • 配置私有仓库拉取镜像
  • Harbor私有仓库
        • 测试私有仓库的上传和拉取
  • Harbor仓库镜像漏洞扫描和信任认证
        • 镜像扫描
        • 镜像信任
            • 信任签名设置
            • 删除签名

Harbor

Harbor本身自带 docker 私有仓库,改变了传统的交付方式。通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率。如何高效地管理和分发Docker镜像?是众多企业需要考虑的问题。

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部的Docker镜像仓库。
它在Docker的开源项目 Distribution的基础上,添加了一些企业需要的功能特性,如镜像同步复制、漏洞扫描和权限管理等。

安装配置

官方的下载地址:https://github.com/goharbor/harbor/releases

解压harbor的压缩包

[[email protected] ~]# tar xfz harbor-offline-installer-v1.10.1.tgz [[email protected] ~]# ls harbor  harbor-offline-installer-v1.10.1.tgz 

因为这里harbor是使用容器的方式部署镜像的所以需要在主机上安装docker-ce,并且开启docker,解决警告信息

配置

在harbor目录里编辑配置

[[email protected] ~]# cd harbor/		#进入解压出来的harbor目录 [[email protected] harbor]# vim harbor.yml	#编辑配置文件   5 hostname: reg.test.com	#自定义一个主机名,这个主机名时需要添加地址解析的才能使用的  13 #https:	#这里我们只是测试关闭https用http的80端口即可  15 #  port: 443  27 harbor_admin_password: redhat123	#设置登陆admin用户的密码 

保存配置,直接执行脚本去启动harbor

[[email protected] harbor]# ./install.sh   [Step 0]: checking if docker is installed ...  Note: docker version: 19.03.11  [Step 1]: checking docker-compose is installed ... ✖ Need to install docker-compose(1.18.0+) by yourself first and run this script again. 

这里注意:启动harbor还需要一个docker插件docker-compose,这个插件可以将多个镜像整合为一个应用去进行部署
下载地址:因为是从github下载所以速度真的是挺慢的

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

推荐可以从阿里云上的资源去下载速度很快:http://mirrors.aliyun.com/docker-toolbox/,找最新版就行

将下载的docker-compose放在/usr/local/bin/里,并添加x执行权限,可以去调用它

[[email protected] ~]# mv docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose [[email protected] ~]# chmod +x /usr/local/bin/docker-compose 

然后再去harbo目录里执行启动脚本,就正常了
企业 harbor仓库部署
执行成功后会生成一个docker-compose.yml文件,里面记录了docker-compose的各种配置

[[email protected] harbor]# ls common     docker-compose.yml     harbor.yml  LICENSE common.sh  harbor.v1.10.1.tar.gz  install.sh  prepare 

也可以通过docker-compose查看开启的镜像
企业 harbor仓库部署

这时成功开启后我们就可以去通过网页直接访问了,输入主机的ip就可以直接访问到,还可以选择中文,用户密码就是开启前修改的admin 的密码
企业 harbor仓库部署
企业 harbor仓库部署

镜像管理

镜像上传

登陆harbor之后会有一个默认的项目library,我们可以测试往这个项目里去上传镜像
企业 harbor仓库部署

在本机主机上先下载或添加一个镜像

[[email protected] ~]# docker load -i busybox.tar  8a788232037e: Loading layer   1.37MB/1.37MB Loaded image: busybox:latest 

然后对这个镜像进行打标签

[[email protected] ~]# docker tag busybox:latest localhost/library/busybox 

下来就是推送,注意打标签时可以直接使用reg.test.com/library/busybox ,但是这样操作必须是harbor开启https认证,否则上传时会报错被拒绝,我们因为使用同一台主机,直接使用本地的80端口就可以上传。
上传之前还是需要登陆认证

[[email protected] harbor]# docker login localhost	#登陆 Username: admin Password:  Login Succeeded  [[email protected] harbor]# docker push localhost/library/busybox	#上传镜像 The push refers to repository [localhost/library/busybox] 8a788232037e: Pushed  latest: digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 size: 527 

然后在harbor页面里就可以看到了
企业 harbor仓库部署
并且在它的日志里会详细记录所有的操作,谁对什么镜像做了什么操作
企业 harbor仓库部署

远程主机上传镜像

删除网页上刚才上传的镜像,在主机里退出docker登陆,关闭harbor,去添加https认证

[[email protected] harbor]# docker logout localhost Removing login credentials for localhost [[email protected] harbor]# docker-compose stop 

在配置文件打开https加密

[[email protected] harbor]# vim harbor.yml   13 https:	#打开之前注释的https功能  14   # https port for harbor, default is 443  15   port: 443  16   # The path of cert and key files for nginx  17   certificate: /data/certs/test.com.crt	#指定证书的存放位置  18   private_key: /data/certs/test.com.key	#指定key的位置 

去在配置文件里自己指定的位置创建证书

[[email protected] harbor]# cd /data/ [[email protected] data]# mkdir -p certs [[email protected] data]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/test.com.key -x509 -days 365 -out certs/test.com.crt ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:SHAANXI Locality Name (eg, city) [Default City]:Xi'an Organization Name (eg, company) [Default Company Ltd]:redhat     Organizational Unit Name (eg, section) []:linux  Common Name (eg, your name or your server's hostname) []:reg.test.com Email Address []:[email protected] 

回到harbor目录,使用脚本去重载配置文件,重启服务

[[email protected] data]# cd ~/harbor/ [[email protected]r3 harbor]# ./prepare  [[email protected] harbor]# ./install.sh  

重启成功后再去访问网页时就会自动定位到https,443端口
因为我们的证书是自己创建的并没有去花钱认证所以标记为不可信的
企业 harbor仓库部署

这时我们就可以使用另一台主机进行远程连接,上传镜像。
准备一个镜像,并给主机添加解析

[[email protected] ~]# docker images nginx                      latest              2622e6cca7eb        7 days ago          132MB 

给这台主机配置证书,可以去访问harbor主机的443端口

远程主机创建目录存放证书 [[email protected] ~]# mkdir -p /etc/docker/certs.d/reg.test.com	  从harbor主机将证书传给远程主机改名为ca.crt [[email protected] harbor]# scp /data/certs/test.com.crt server2:/etc/docker/certs.d/reg.test.com/ca.crt 

给这个镜像打标签,登陆仓库,推送镜像

[[email protected] ~]# docker tag nginx:latest reg.test.com/library/nginx	#打标签  [[email protected] ~]# docker login reg.test.com	#登陆认证 Username: admin	#因为只有一个用户,就是用它登陆 Password: Login Succeeded  [[email protected] ~]# docker push reg.test.com/library/nginx	#上传镜像 

成功上传,镜像可以显示出来
企业 harbor仓库部署

配置私有仓库拉取镜像

这里私有拉取仓库目的是更改默认镜像下载的地址,正常我们使用docker pull nginx 肯定是从官方或自己设置的加速地址拉取的,现在设置直接可以从我们自己的harbor里拉取镜像。

远程主机操作测试,配置私有仓库路径

[[email protected] ~]# vim /etc/docker/daemon.json {   "registry-mirrors": ["https://reg.test.com"]	#配置自己的仓库地址 }  [[email protected] ~]# systemctl restart docker	#重启服务 

我的仓库里有一个busybox,但是主机上没有这个镜像,我就去拉取这个镜像
企业 harbor仓库部署
拉取镜像的时候不需要验证,直接执行pull指令就可以

[[email protected] ~]# docker pull busybox	#拉去镜像 Using default tag: latest latest: Pulling from library/busybox 90e01955edcd: Pull complete  Digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 Status: Downloaded newer image for busybox:latest docker.io/library/busybox:latest 

harbor的日志里也可以看到拉取的信息
企业 harbor仓库部署

Harbor私有仓库

之前harbor里的library仓库是公开的,对所有人都可见,那现在就需要配置一个不公开的仓库
企业 harbor仓库部署

建立新仓库,第定义名称,-1表示无限制
企业 harbor仓库部署

接着去建立一个新用户,在左侧点击用户管理,添加新用户,自定义
企业 harbor仓库部署
然后到我们的建立的私有项目里,成员选项,+成员,把这个用户添加进去,并且可以给它设置身份,不同的身份会有权限的限制,项目管理员肯定是最大的权限
企业 harbor仓库部署
这里我设置为维护人员
企业 harbor仓库部署
设置好之后就可以使用这个用户去登陆harbor,但是它的权限很小,可以看到,除了项目和日志的查看功能,其他的都没有
企业 harbor仓库部署

测试私有仓库的上传和拉取

镜像上传

[[email protected] ~]# docker login reg.test.com Username: howei	#使用我们建立的用户登陆 Password:  Login Succeeded  [[email protected] ~]# docker tag busybox:latest reg.test.com/redhat/busybox	#打标签给私有仓库里 [[email protected] ~]# docker push reg.test.com/redhat/busybox	#上传镜像 The push refers to repository [reg.test.com/redhat/busybox] 8a788232037e: Pushed  latest: digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 size: 527 

企业 harbor仓库部署

镜像拉取

注意因为这是私有仓库,如果登陆认证是无法拉取镜像的

[[email protected] ~]# docker rmi reg.test.com/redhat/busybox [[email protected] ~]# docker rmi busybox		#删除本地已存在镜像  [[email protected] ~]# docker logout reg.test.com		#登出 Removing login credentials for reg.test.com [[email protected] ~]# docker pull reg.test.com/redhat/busybox	#拉取时被拒绝了 Using default tag: latest Error response from daemon: pull access denied for reg.test.com/redhat/busybox, repository does not exist or may require 'docker login': denied: requested access to the resource is denied 

私有仓库拉取必须使用仓库认证的用户先登验证,再拉取

[[email protected] ~]# docker login reg.test.com Username: howei Password:  Login Succeeded  [[email protected] ~]# docker pull reg.test.com/redhat/busybox Using default tag: latest latest: Pulling from redhat/busybox 90e01955edcd: Pull complete  Digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 Status: Downloaded newer image for reg.test.com/redhat/busybox:latest reg.test.com/redhat/busybox:latest 

Harbor仓库镜像漏洞扫描和信任认证

漏洞扫描和信任认证功能默认在运行harbor时是没有开启的,所以我们需要关闭,重新开启它增加参数

[[email protected] harbor]# docker-compose stop  [[email protected] harbor]# ./install.sh  --with-notary --with-clair --with-chartmuseum  --with-notary镜像信任功能 --with-clair镜像扫描漏洞功能 

再次开启后,刷新页面,可以看到仓库里多了Helm Charts功能,在镜像里也能看到扫描的信息
企业 harbor仓库部署
企业 harbor仓库部署

镜像扫描

我们可以手动勾选取点击扫描,检测看镜像是否有漏洞
企业 harbor仓库部署

可以在项目仓库的配置管理里去勾选自动扫描的选项,在上传镜像时自动去扫描漏洞,记着点保存
企业 harbor仓库部署

然后我们去打标签镜像,再去上传到library里

[[email protected] ~]# docker login reg.test.com	#登陆 Username: admin Password:  Login Succeeded  [[email protected] ~]# docker tag reg.test.com/redhat/busybox reg.test.com/library/busybox:v2 	#打标签 [[email protected] ~]# docker push reg.test.com/library/busybox	#上传 The push refers to repository [reg.test.com/library/busybox] 8a788232037e: Layer already exists  v2: digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 size: 527 

可以在harbor里看到镜像自动扫描了
企业 harbor仓库部署

镜像信任

镜像信任功能可以保证镜像的安全,因为只有打了信任标签的镜像才可以被拉取
测试,先使用admin管理员登陆认证

[[email protected] ~]# docker login reg.test.com	#登陆 Username: admin Password:  Login Succeeded 

然后在配置管理里勾选内容信任
企业 harbor仓库部署
删除本地的busybox,再去拉取library里的busybox镜像
会得到一个错误镜像没有签名

[[email protected] ~]# docker pull reg.test.com/library/busybox Using default tag: latest Error response from daemon: unknown: The image is not signed in Notary. 

这就是在开启信任认证之后,没有签名的镜像都不能被随意拉取
以签名是“×”
企业 harbor仓库部署

信任签名设置

部署证书:

[[email protected] ~]# cd ~/.docker/ [[email protected] .docker]# mkdir -p tls/reg.test.com:4443/ [[email protected] .docker]# cp /etc/docker/certs.d/reg.test.com/ca.crt  tls/reg.test.com:4443/ca.crt 

添加参数,开启内容信任

[[email protected] .docker]# export DOCKER_CONTENT_TRUST=1 [[email protected] .docker]# export DOCKER_CONTENT_TRUST_SERVER=https://reg.test.com:4443 
[[email protected] harbor]# netstat -ntlp tcp6       0      0 :::4443                 :::*                    LISTEN      25233/docker-proxy   

上传镜像测试,上传到library仓库里,因为这里面我们开启了内容信任,记着要先登陆认证
注意:要上传签名的镜像必须是有标签的,如果没有打标签,上传就会有签名,因为两个是绑定的。

[[email protected] harbor]# docker tag busybox:latest reg.test.com/library/busybox:v3	#打标签 [[email protected] harbor]# docker push reg.test.com/library/busybox:v3	#上传 --- Enter passphrase for new root key with ID 8ce0c6d: 	#因为有信任标签,这里就需要设置root的认证码 Repeat passphrase for new root key with ID 8ce0c6d:  Enter passphrase for new repository key with ID a0b00c3: 	#设置repository的认证码 Repeat passphrase for new repository key with ID a0b00c3:  

上传成功后,在harbor里就可以看到已签名的的标志,而且打了签名的镜像不能随意的去删除
企业 harbor仓库部署

然后我们去其他认证的主机上就可以拉取打了签名的镜像了

[[email protected] ~]# docker pull reg.test.com/library/busybox:v3 v3: Pulling from library/busybox Digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 Status: Downloaded newer image for reg.test.com/library/busybox:v3 reg.test.com/library/busybox:v3  
删除签名

命令删除签名

[[email protected] harbor]# docker trust revoke reg.test.com/library/busybox:v3 Enter passphrase for repository key with ID a0b00c3: 	#上传时设置的密码 Successfully deleted signature for reg.test.com/library/busybox:v3 

页面刷新也可以看到,签名变为“×”了
企业 harbor仓库部署

本文转自互联网,侵权联系删除企业 harbor仓库部署

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 企业 harbor仓库部署
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们