为k8s准备docker 私有仓库 harbor

目录

[一、 环境准备](#一、 环境准备)

二、部署docker

二、为Registry提加密传输

三、为仓库建立登陆认证

四、构建harbor

五、上传镜像

然后就是在200上面进行配置了


一、 环境准备

我是用两台虚拟机(红帽9)的,一台172.25.254.10用来部署加密认证仓库,另一台172.25.254.200用来登录这个仓库来上传镜像。

然后首先是进行docker部署

二、部署docker

需要在两台虚拟机上上传docker.tar.gz这个包

然后就是进行解压这个包 tar zxf docker.tar.gz ,解压完就会出现很多rpm的包,这里我们直接dnf install *.rpm -y 全部安装

然后我们就可以 systemctl enable --now docker 启动docker了

二、Registry提加密传输

这里我们需要这个registry.tar.gz包,然后通过docker load -i registry.tar.gz 来直接加载镜像


注意要写解析文件/etc/hosts,这样其他地方才能登录到这个仓库

bash 复制代码
[root@habor ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.10	harbor.haha.com reg.haha.org

并且windows下面也要解析

然后我们开始生成认证key和证书

bash 复制代码
#创建存放证书密钥的目录
[root@harbor ~]# mkdir certs
#openssl创建证书密钥
[root@harbor ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/haha.org.key -addext "subjectAltName = DNS:reg.haha.org" -x509 -days 365 -out certs/haha.org.crt

然后建立仓库registry:

bash 复制代码
[root@harbor ~]# docker run -d -p 443:443  --restart=always --name registry  --name registry -v /opt/registry:/var/lib/registry -v /root/certs:/certs  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/haha.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/haha.org.key registry

为客户端建立证书

bash 复制代码
[root@docker docker]# mkdir /etc/docker/certs.d/reg.haha.org/ -p
[root@docker docker]# cp /root/certs/haha.org.crt
/etc/docker/certs.d/reg.haha.org/ca.crt
[root@docker docker]# systemctl restart docker

三、为仓库建立登陆认证

安装建立认证文件的工具包

bash 复制代码
[root@harbor]# dnf install httpd-tools -y

然后建立认证文件

bash 复制代码
[root@harbor~]# mkdir auth
[root@harbor~]# htpasswd -Bc auth/htpasswd admin#-B 强制使用最安全加密方式,
默认用md5加密
New password:
Re-type new password:
Adding password for user admin

添加认证到registry容器中

bash 复制代码
[root@docker ~]# docker run -d -p 443:443 --restart=always --name registry \
> --name registry -v /opt/registry:/var/lib/registry \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/haha.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/haha.org.key \
> -v /root/auth:/auth \
> -e "REGISTRY_AUTH=htpasswd" \
> -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/.htpasswd \
> registry

然后登录测试

[root@habor ~]# systemctl restart docker
[root@habor ~]# docker login reg.haha.org
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/#credential-stores

Login Succeeded

注意:当仓库开启认证后必须登陆仓库才能进行镜像上传

四、构建harbor

在这里我们需要下面的这个包

然后解压之后就会出现我们所需要的文件:

bash 复制代码
[root@harbor ~]# tar zxf harbor-offline-installer-v2.5.4.tgz
[root@harbor ~]# ls
anaconda-ks.cfg certs harbor-offline-installer-v2.5.4.tgz
auth harbor
[root@harbor ~]# cd harbor/

然后复制生成yml文件,并在里面修改一些配置

bash 复制代码
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml
#修改下面的内容
hostname: reg.haha.org
certificate: /data/certs/haha.org.crt
private_key: /data/certs/haha.org.key
harbor_admin_password: 123

yml文件如下图

然后创建我们在yml中写的证书密钥的目录,并把证书密钥复制过去

bash 复制代码
[root@harbor ]# mkdir /data
[root@harbor ]# cp /root/certs /data/ -r
[root@harbor ~]# cd /data/certs
[root@harbor certs]# ll
总用量 8
-rw-r--r--. 1 root root 2151  8月 31 18:05 haha.org.crt
-rw-------. 1 root root 3272  8月 31 18:05 haha.org.key
[root@harbor certs]# 

然后就可以启动编译
[root@harbor harbor]# ./install.sh --with-chartmuseum
如果当我们虚机重启之后可以使用下面的命令,先停止,再重新构建

管理 harbor 的容器

[root@docker harbor]# docker compose stop
[root@docker harbor]# docker compose up -d

此时就可以登陆了,但此时里面没有镜像,需要我们上传,我这里是在另一台机子上上传的因为需要上传大量的镜像供后面学习使用。

五、上传镜像

需要将harbor机子里面的客户端证书拷贝过来200上面

bash 复制代码
[root@harbor ~]#  scp /etc/docker/certs.d/reg.haha.org/ca.crt root@172.25.254.200:/etc/docker/certs.d/reg.haha.org/ca.crt

然后就是在200上面进行配置了

注意其docker要提前配置好

注意要写本地解析 是 harbor的解析 在/etc/hosts添加 172.25.254.10 reg.haha.org
先要把下面的包上传到虚拟机上,

然后进行load 加载镜像

就会出现下面这些镜像 ,这里需要将这些镜像都上传到harbor
然后正则匹配打标签

docker images | awk 'NR>1{system("docker tag "$1":"$2" reg.haha.org/library/"$1":"$2)}'

然后在这里先登录harbor,上传镜像

docker images | awk '/reg.haha.org/{system("docker push "$1":"$2)}'

最后我们镜像就上传成功了

相关推荐
2301_819287121 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la1 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
武汉联从信息1 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20151 小时前
STUN服务器实现NAT穿透
运维·服务器
PieroPc2 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
VinciYan2 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
冷曦_sole3 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒3 小时前
Linux(二)_清理空间
linux·运维·服务器
tntlbb3 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器
Gabriel_liao3 小时前
Docker安装Neo4j
docker·容器·neo4j