在kubernetes集群中如果要部署springcloud这样的应用,就必须有一个自建的docker镜像中心仓库。
它的目的有两点: 1. 镜像拉取速度快 2. 开发好维护
而Harbor是一个非常好用的docker本地仓库
所以本篇文章来讲讲如何在部署Harbor仓库
首先系统版本最低要求:
System requirements:
On a Linux host: docker 17.06.0-ce+ and docker-compose 1.18.0+ .
也就是docker版本要大于17.06.0-ce+ , docker-compose版本要大于 1.18.0+ 。
否则没法安装。
docker升级方法:
先卸载:
yum remove docker \
docker-client \docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
再重新安装
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
docker-compose最好通过pip安装(这样能自动解决依赖问题)
python3通常会自带pip, 如果是python 2, 则这样安装pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
然后pip安装 docker-compose
pip install docker-compose
这些重要依赖安装以后,然后到harbor官网下载安装包:Releases · goharbor/harbor · GitHub
下载harbor安装包
proxychains4 wget https://github.com/goharbor/harbor/releases/download/v2.9.1/harbor-offline-installer-v2.9.1.tgz
// 注意:我这里使用了proxychains4加速下载,具体用法可以自行搜索
然后解压安装包:
tar -xvf harbor-offline-installer-v2.9.1.tgz
进入安装目录
cd harbor
生成自建ssl证书:
#创建证书目录
mkdir sslcert
cd sslcert
#执行创建证书脚本
./gencert.sh
以下是创建证书脚本的内容
#!/bin/bash
domain="registry.myharbor.com" # 此处写harbor仓库的自定义域名
rm -f ca* ${domain}.* full_chain*
echo "开始生成证书------------"
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-subj "/C=TW/ST=Taibei/L=Taibei/O=mycom/OU=Personal/CN=MyCA" \
-x509 -days 36500 -out ca.crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ${domain}.key \
-subj "/C=TW/ST=Taibei/L=Taibei/O=mycom/OU=Personal/CN=${domain}" \
-out ${domain}.csr
openssl x509 -req -in ${domain}.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out ${domain}.crt -days 36500
鉴于docker信任自建证书的方法没什么卵用,所以这里就不再拷贝证书到/etc/docker/certs.d/域名目录了,因为确实没有什么鸟用。
然后修改harbor.yml.tmpl文件
然后修改该文件的下面三处内容:
1. harbor仓库域名
2. 指定自建http证书和key的路径
3. 指定harbor仓库的管理员密码(docker push的时候会用到)
然后把harbor.yml.tmpl重命名为harbor.yml,
cp harbor.yml.tmpl harbor.yml
记住:这一步很重要,否则后面会报错:no config file: /opt/harbor/harbor.yml
然后开始安装harbor:
./install.sh
至此harbor仓库安装完成,此时harbor仓库已经启动。
可以通过自定义域名访问harbor仓库:
注意:因为harbor是通过docker-compose管理的,所以以下是docker-compose管理harbor的命令
// 切换到harbor的安装目录
docker-compose up -d // 启动harbor并在后台运行 (harbor没有启动时候执行该命令)
docker-compose down // 删除所有harbor容器
docker-compose restart // 重启所以harbor容器
docker-compose stop // 停止所有harbor容器
docker-compose start // 启动所以已停止的harbor容器