为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 [email protected]:/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)

相关推荐
小王努力学编程8 分钟前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
小王不会写code27 分钟前
Docker安装、配置Redis
redis·docker
liuliu03231 小时前
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
linux·运维·ubuntu
RedCong1 小时前
如何在k8s中对接s3存储
云原生·容器·kubernetes
SDL大华1 小时前
【备忘】在Docker中安装宝塔面板,实现环境隔离,又能快速迁移服务器环境
服务器·docker·容器
DADIAN_GONG3 小时前
incomplete command on Huawei switch
linux·运维·华为
水星灭绝3 小时前
orangepi zero烧录及SSH联网
运维·ssh
TC13983 小时前
docker 终端打不开rviz2界面,报错qt.qpa.xcb: could not connect to display
docker·容器
牛马小陈同学3 小时前
Kafka+Zookeeper从docker部署到spring boot使用完整教程
linux·spring boot·docker·zookeeper·kafka·prettyzoo·kafka-ui
緣起緣落3 小时前
Linux(CentOS 7) 部署 redis 集群
linux·运维·服务器·redis·centos·集成学习