#为什么需要镜像仓库(改为装在node1上了)
#之前我们的安装步骤中都是让目标服务器以命令的形式通过dockerfile进行构建镜像再部署pod容器的,这样在集群中会增加构建的成本。所以我们,在jenkins就把镜像构建好,然后再把镜像发送到目标服务器,再由服务器进行部署pod,这是一个相对更好的方案。可以大大提高项目部署的时间。
#所以为了jenkins可以制作镜像,再传给目标服务器,我们就需要harboor
#我们在经过maven构建、sonar检测后,需要制作自定义镜像,并传到harboor上。那么jenkins就不需要再推送文件给目标服务器了,而是通知目标服务器直接从harboor上拉取镜像进行部署。
[root@k8smaster local]# pwd
/usr/local
[root@k8smaster local]# wget http://pan.itshine.cn:5080/?explorer/share/fileOut&shareID=64h6PiQQ&path=%7BshareItemLink%3A64h6PiQQ%7D%2F%E5%B7%A5%E5%85%B7%2Fharbor-offline-installer-v2.9.0.tgz
[root@k8smaster local]# tar xvf harbor-offline-installer-v2.9.0.tg
[root@k8smaster local]# cd harbor
[root@k8smaster harbor]# cp harbor.yml.tmpl harbor.yml
[root@k8smaster harbor]# vim harbor.yml
[root@k8smaster harbor]# ./install.sh
[root@k8snode1 harbor]# docker compose up -d
#运行成功访问ip:80地址
#用户名密码默认为admin/Harbor12345
#harbor的基础操作
#创建仓库。后续我们把制作好的镜像放到repo这个仓库中
#因为harbor对上传镜像的名称有强要求,所以我们需要对镜像进行tag操作。
#一般的命名要求:harbor地址/仓库名/镜像名:版本
#先设置仓库地址,可以从harboor拉取和上传镜像.(这里我把harboor换到21的机器上了,因为21是node1,也作测试环境)
[root@k8smaster harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": [https://frtqcj69.mirror.aliyuncs.com"],
"insecure-registries": ["http://192.168.64.21:80"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
[root@k8snode1 harbor]# systemctl daemon-reload
[root@k8snode1 harbor]# systemctl restart docker
#再改tag
[root@k8snode1 harbor]# docker tag mytest1:v1.0.0 192.168.64.21:80/repo/mytest:v1.0.0
#push镜像操作
#先登录到harbor
[root@k8snode1 harbor]# docker login -u admin -p Harbor12345 192.168.64.21:80
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
[root@k8snode1 harbor]# docker push 192.168.64.21:80/repo/mytest:v1.0.0
#随后在harbor上即可看到
#拉取镜像(因为仓库是共有的,所以pull不需要用户名密码)