部署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可以参照我前面的文章,我这里不写了

下载

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=sunlixin.win" -days 365 -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -nodes -key server.key -subj "/CN=sunlixin.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

cd /usr/local/prometheus
cp harbor.yml.tmpl harbor.yml

修改harbor.yaml中的https证书路径以及端口,其他的看注释应该都能完成修改

https:
  # https port for harbor, default is 443
  port: 9443
  # The path of cert and key files for nginx
  certificate: /root/harbor/cert/server.crt
  private_key: /root/harbor/cert/server.key

安装Harbor仓库

执行解压目录下的install脚本,即可完成安装

./install

检查端口和进程

 

 

 

打开管理控制台

打开浏览器 https://192.168.6.61:3000

看到Harbor的Web管理页面,默认管理账户为 admin ,密码为 Harbor12345,该密码的初始配置在harbor.yml文件中

 

 入门使用

建立项目:路径-->新建

 

 注意:默认管理员就有项目的管理权限

推送命令:点击竞争仓库可以看到推送命令。这里包含有docker以及k8s的helm

 

客户端配置:这个是私有镜像仓库。需要额外配置以下docker的参数,在/etc/docker/daemon.json中添加仓库地址

{
  "insecure-registries": ["192.168.6.61:3000"]
}

登录:docker login 192.168.6.61:3000

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-store

Login Succeeded

为镜像打标记

docker image tag mysql:8.0 192.168.6.61:3000/demo/mysql:8.0

推送镜像文件

docker push  192.168.6.61:3000/demo/mysql:8.0

输出:

The push refers to repository [192.168.6.61: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

在浏览器上查看镜像

 

 其他的客户端拉取镜像

docker pull  192.168.6.61:3000/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上面还有很多功能,比如,对镜像进行扫描,看看有没有漏洞,支持分布式以及高可用。

posted @ 2022-09-12 19:54  百因必有果  阅读(248)  评论(0编辑  收藏  举报