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