为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 此时就可以登陆了,但此时里面没有镜像,需要我们上传,我这里是在另一台机子上上传的因为需要上传大量的镜像供后面学习使用。 ![](https://i-blog.csdnimg.cn/direct/879aaffe0bc44d8696ca5fc5406a1468.png) ## 五、上传镜像 需要将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 > 先要把下面的包上传到虚拟机上, > > ![](https://i-blog.csdnimg.cn/direct/cd40263472ef436798d48257ca29eb41.png) > > 然后进行load 加载镜像 > > ![](https://i-blog.csdnimg.cn/direct/41e317f9c96d493e8d99185b0e90a6e1.png)就会出现下面这些镜像 ,这里需要将这些镜像都上传到harbor![](https://i-blog.csdnimg.cn/direct/46b7244f5a344ff9b46f8a513fdbe83e.png) > 然后正则匹配打标签 > > docker images \| awk 'NR\>1{system("docker tag "$1":"$2" reg.haha.org/library/"$1":"$2)}' > > 然后在这里先登录harbor,上传镜像 > > ![](https://i-blog.csdnimg.cn/direct/30aaf2f5cc8b44c29bfc4eb9dc58d0fa.png) > > docker images \| awk '/reg.haha.org/{system("docker push "$1":"$2)}' 最后我们镜像就上传成功了 ![](https://i-blog.csdnimg.cn/direct/09da011ab3a441cebf219a89bf4f00d9.png)

相关推荐
ulias21218 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷20 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简20 小时前
docker 镜像相关
运维·docker·容器
Dream of maid21 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾21 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen21 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…21 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
Hommy881 天前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
一叶知秋yyds1 天前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器