手把手教你搭建Harbor镜像仓库
概述
在使用docker进行部署的时候,我们需要有个仓库来对我们的自己封装的镜像文件进行管理,之前我是一直使用的是阿里云提供仓库,这个是免费的,也是挺好用的,但对仓库的数量是有限制的,无法进行企业化的管理,所以这里我们采用Harbor搭建一个属于自己的docker的镜像管理仓库。
Harbor
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,具有web管理功能,操作其实是非常简单易行的。
Harbor是一个基于Apache协议的开源软件,主要开发语言为go,项目地址 https://github.com/goharbor/harbor
部署
harbor本身也是基于docker镜像,使用docker-compose来进行编排部署,所以在部署前,需要在目标机器先完成docker以及docker-compose工具的安装,这里不进行具体操作,安装docker以及docker-compose比较简单,百度即可。
我这里以 版本为 2.5.1为例,以在线的版本进行部署
下载
curl https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-online-installer-v2.5.1.tgz -O
解压
tar -xf harbor-online-installer-v2.5.1.tgz
创建https证书
# 创建文件夹
mkdir cert
# 进入文件夹
cd cert
# 创建证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=xiaojinran.win" -days 365 -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -nodes -key server.key -subj "/CN=xiaojinran.com" -out server.csr
echo subjectAltName = IP:172.18.1.67 > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 365
配置安装参数
复制解压目录下的harbor.yml.tmpl,重命名为harbor.yml
cp harbor.yml.tmpl harbor.yml
修改harbor.yml中的https证书路径以及端口,其他的看注释应该都能完成修改
https:# https port for harbor, default is 443port: 9443# The path of cert and key files for nginxcertificate: /root/harbor/cert/server.crtprivate_key: /root/harbor/cert/server.key
安装Harbor仓库
执行解压目录下的install脚本,即可完成安装
./install
验证镜像运行情况
在解压的目录下,可以看到一个docker-compose.yml文件,执行docker-compose可以查看镜像运行情况
docker-compose -f docker-compose.yml ps
打开管理控制台
https://172.18.1.67:9443 即可看到Harbor的Web管理页面,默认管理账户为 admin ,密码为 Harbor12345,该密码的初始配置在harbor.yml文件中

入门使用
建立项目
路径:项目-》新建

注:默认管理员就有项目的管理权限
推送命令:点击镜像仓库可以看到推送命令,这里包含有docker以及k8s的Helm

客户端配置
由于是私有镜像仓库,需要额外配置以下docker的参数,在/etc/docker/daemon.json中添加仓库地址
{"insecure-registries": ["172.18.1.67:9443"]
}
登录
docker login 172.18.1.67:9443
输出
Username: admin
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
为镜像打标记
docker image tag mysql:8.0 172.18.1.67:9443/demo/mysql:8.0
推送镜像文件
docker push 172.18.1.67:9443/demo/mysql:8.0
输出
The push refers to repository [172.18.1.67:9443/demo/mysql]
20048e9ea24b: Pushed
f654c732eb30: Pushed
d89c67210fbb: Pushed
999500c33f79: Pushed
e19e05fc6c0c: Pushed
f1ce24a3a906: Pushed
bcdcddd1968e: Pushed
a6139270daa5: Pushed
f8589c04a7c4: Pushed
726b89cb4adb: Pushed
83798bb64452: Pushed
c1065d45b872: Pushed
8.0: digest: sha256:8cdf596eb3fba84ae6d0ad683d330dcaf87ef8fb51e4d5dd9f1e289c5012e0f8 size: 2828
Web控制台查看镜像

其他客户端拉取镜像
docker pull 172.18.1.67:9443/demo/mysql:8.0
输出
8.0: Pulling from demo/mysql
f003217c5aae: Pull complete
65d94f01a09f: Pull complete
43d78aaa6078: Pull complete
a0f91ffbdf69: Pull complete
59ee9e07e12f: Pull complete
04d82978082c: Pull complete
70f46ebb971a: Pull complete
db6ea71d471d: Pull complete
c2920c795b25: Pull complete
26c3bdf75ff5: Pull complete
9ec1f1f78b0e: Pull complete
4607fa685ac6: Pull complete
Digest: sha256:8cdf596eb3fba84ae6d0ad683d330dcaf87ef8fb51e4d5dd9f1e289c5012e0f8
Status: Downloaded newer image for siruiqi.com:9443/demo/mysql:8.0
172.18.1.67:9443/demo/mysql:8.0
总结
至此,完成了企业级的镜像仓库的部署安装和简单的入门使用,Harbor上面还有很多好玩的功能,比如对镜像层进行扫描,看有没有漏洞,支持分布式以及高可用,一般企业单实例已经够用了,毕竟只是当作一个制品中心供企业内部使用。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
