子任务一:
(1)基于Harbor搭建私有仓库,并运行一个java应用程序/Python应用程序的镜像打包、发布
(2)基于docker对上述镜像进行下载、运行和测试验证
本篇内容基于Ubuntu20.04.5,安装harbor v1.1.2。过程中解决了安装harbor v1.1.2出现的各种问题,在此做一个记录,可作为参考。
目录
一、基于harbor搭建私有仓库,并实现一个java应用程序/Python应用程序的镜像打包、发布
一、基于harbor搭建私有仓库,并实现一个java应用程序/Python应用程序的镜像打包、发布
1.什么是harbor
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
1)基于角色的访问控制(Role Based Access Control)
2)基于策略的镜像复制(Policy based image replication)
3)镜像的漏洞扫描(Vulnerability Scanning)
4)AD/LDAP集成(LDAP/AD support)
5)镜像的删除和空间清理(Image deletion & garbage collection)
6)友好的管理UI(Graphical user portal)
7)审计日志(Audit logging)
8)RESTful API
9)部署简单(Easy deployment)
Harbor的所有组件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。需要特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本,docker-compose必须要大于1.6.0版本!
参考内容:私有仓库Harbor介绍与部署_假面生的博客-CSDN博客
2.安装docker
由于虚拟机上已经安装了docker,检查一下docker的版本
(docker版本不能小于1.10.0)
3.下载docker-compose
开始安装docker-compose
出现了如下的错误
挂梯子,再试一次之后成功
二进制文件赋可执行权限
查看docker-compose是否安装成功
出现版本信息,已经安装成功
4.安装harbor并进行配置
在根目录下创建harbor文件夹并进入
按照步骤使用yum安装wget的时候,遇到了这样的问题
根据查找资料,yum无法支持ubuntu的软件包体系,而且ubuntu默认也没有准备yum的数据库,两方面导致了yum无法在ubuntu上进行使用
使用 apt install wget安装wget
使用wget获取harbor
获得之后,在根目录下的harbor文件夹中就有了harbor-online的installer压缩包
解压缩以后查看,多出来了一个harbor文件夹
接下来进行harbor的配置
进入刚解压出来的harbor文件夹下
查看一下harbor文件夹中的内容
使用vim工具打开harbor.cfg
内容如上,每个字段的含义都在蓝色英文注释中解释了
我进行的修改如下:
修改hostname:
这是访问地址
查询我的虚拟机ip地址为192.168.163.128
于是将hostname设置为192.168.163.128
补充,后面修改了网卡信息
修改db_password:
这是mysql数据库的密码,实际使用一般设置成123456
修改harbor_admin_password:
这是启动harbor之后,管理员ui登录的密码。
5.启动harbor
修改完配置文件以后,在当前目录执行./install
出现如下问题,找不到文件或文件夹
搜索了一下,可以找到在usr/bin下的python,判断可能是软连接出现问题
因此先删除软连接,后进行重新连接
解决了python找不到的问题
继续./install.sh
出现了如上的问题
原因是在python中,十进制整数不能以0作为开头
打开这个prepare文件,修改它的源代码
接下来还有很多因为这个问题需要修改的地方,在此进行记录:
在执行时,遇到新的问题:
把600前面的空格删了
发现还是会报这个错
仔细想了一下,python中是需要使用tab制表符进行缩进
因此我重新调整了一下prepare文件中的代码缩进,最终成功运行成功
看到绿绿的东西真的很开心5555555555555555
查看一下docker的镜像,发现了许多以vmware开头的服务,这些就是harbor的内容
查看一下harbor启动的镜像与服务
启动完成后,访问刚设置的hostname即可,默认是80端口,如果端口占用,可以去修改docker-compose.yml文件中,对应服务的端口映射
刚刚设置的hostname是192.168.163.128,端口是80
对此进行访问,能够打开web harbor
6.Harbor仓库使用
用户名使用admin
密码使用刚刚配置文件中设置的123456
登录后的展示页面
新建一个项目
点击上图中蓝色字体的+project
在此创建了一个名称为myharbor的项目,没有点击public公开
当项目设为公开后,任何人都有此项目下镜像的读权限,命令行用户不需要docker login就可以拉取此项目下的镜像。
创建好仓库之后,可以点开仓库,显示如下内容:
7.实现java/python应用程序的镜像打包与发布
过程中重启了虚拟机
再打开时发现服务都处于exit状态
使用docker-compose up命令启动服务
现在已将服务启动
以前做项目有一个jar包,正好拿来进行docker 的镜像制作
想用共享文件夹的方式把文件传上来
但发现一开始配置的可以使用的共享文件夹现在用不了了
觉得可能是因为重启了虚拟机的原因
通过下述的办法进行了解决
Vmware共享文件夹不显示_vmware共享文件夹看不到_强_子的博客-CSDN博客
上述的操作即进行重新挂载
对照着上面的博客,对于命令进行了修改与调整,最终成功了
现在就能看到主机共享到虚拟机的jar包了
接下来对将jar包制作成docker镜像
在jar包旁边创建一个dockerFile
打开dockerFile
在dockerFile中写入如上图所示内容
接下来使用docker build构建镜像
这条命令需要在dockerFile的目录下使用
-t是设置tag的意思,在此我设置为1.0.0
正在构建成镜像的过程图:
构造成功后结果图:
构建完成以后,查看我们的docker中是否已经存在test/coan-back-end的镜像
可以看到现在jar包已经被制作成docker的镜像了
打包成镜像之后,可以push到仓库
首先登陆到192.168.163.128
连接被拒绝
将harbor加入docker信任列表
配置完成后重加载配置
重新加载配置没用,还是需要重启docker
重启docker以后,再将docker-compose重启
再次登录便成功了
对要上传至harbor仓库的镜像进行修改tag操作
执行推送命令
推送成功
现在打开harbor就能看到内容了
二、基于docker对上述镜像进行下载、运行和测试验证
当前我的docker中,有这些镜像
为了验证下载,我将test/coan-back-end进行删除
删除过程中出现问题,原因是镜像被多个从库引用
原因是,如果两个镜像的id是相同的,使用docker rmi 【镜像id】就会报错
那么可以使用docker rmi 【镜像名:版本号】进行删除
上面的命令也出现了一些问题,最后用docker rmi 89e删除成功,
89e即image id前三位
最后删掉了两个本地的coan-back-end
下载harbor上的coan-back-end
下载完成,看看本地是否出现
本地再次出现了coan-back-end 1.0.0,表明下载成功
至此实验完成
三、参考资料
(206条消息) Harbor的镜像上传和拉取_if年少有为的博客-CSDN博客
(206条消息) Harbor仓库搭建及简单使用_harbor的简单使用_邋遢的流浪剑客的博客-CSDN博客
(206条消息) 将jar包打包为docker镜像_将jar包打包成docker镜像_Jarbein的博客-CSDN博客