手把手教你搭建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上面还有很多好玩的功能,比如对镜像层进行扫描,看有没有漏洞,支持分布式以及高可用,一般企业单实例已经够用了,毕竟只是当作一个制品中心供企业内部使用。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部