【Kubernetes专项】搭建私有Harbor本地仓库
·
六、部署Harbor私有仓库

以下Harbor仓库在RHEL9.3中完成的
[root@reg ~]# systemctl disable --now firewalld
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@reg ~]# getenforce
Disabled
[root@reg ~]# vim /etc/yum.repos.d/docker.repo
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9.3/x86_64/stable/
gpgckeck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/rhel/gpg
[root@reg yum.repos.d]# yum makecache
[root@reg yum.repos.d]# rpm -qa | grep podman
podman-4.6.1-5.el9.x86_64
cockpit-podman-76-1.el9_3.noarch
[root@reg yum.repos.d]# rm -rf podman-4.6.1-5.el9.x86_64
[root@reg yum.repos.d]# rm -rf cockpit-podman-76-1.el9_3.noarch
# 上传所需文件
[root@reg ~]# cd /mnt/
[root@reg mnt]# ls
docker.tar.gz packages.zip
[root@reg mnt]# tar zxf docker.tar.gz
[root@reg mnt]# unzip packages.zip
[root@reg mnt]# ls
docker docker.tar.gz packages packages.zip
[root@reg mnt]# cd docker/
[root@reg docker]# yum install *.rpm
# 为确保启用 Docker 对 iptables 规则的自动管理(默认开启,写上是确保)
# 在第 15 行命令,在后面加上参数 --iptables=true
# iptables=true --> 记得加s,记得不要有空格
[root@reg docker]# vim /usr/lib/systemd/system/docker.service
15 ExecStart =/usr/bin/dockerd -H fd:// --containerd =/run/containerd/containerd.sock --iptables=true
[root@reg docker]# systemctl daemon-reload
[root@reg docker]# systemctl restart docker
# 启用 Linux 内核的 IP 转发功能。
# 这是容器访问外网(或外部访问容器)的必要条件
# 必须开启,否则容器网络不通
[root@reg docker]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
[root@reg docker]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@reg docker]# sysctl -p
[root@reg docker]# systemctl enable --now docker.service
[root@reg docker]# docker info
# 以下除了 rhel9 不需要做,其他版本的系统建议去做
# 激活内核网络选项
]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf
]# modprobe br_netfilter
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
]# sysctl --system
]# systemctl restart docker
# 创建了证书与密钥
[root@reg ~]# mkdir -p /data/certs
[root@reg ~]# openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout /data/certs/kaser.org.key \
-addext "subjectAltName = DNS: reg.kaser.org" \
-x509 -days 365 -out /data/certs/kaser.org.crt
Common Name (eg, your name or your server's hostname) []:reg.kaser.org
# 创建证书目录并部署信任证书(使 Docker 客户端信任私有仓库的 HTTPS 证书)
[root@reg ~]# mkdir -p /etc/docker/certs.d/reg.kaser.org/
[root@reg ~]# cp /data/certs/kaser.org.crt /etc/docker/certs.d/reg.kaser.org/ca.crt
[root@reg ~]# systemctl restart docker
[root@reg ~]# cd /mnt/packages/
[root@reg packages]# cp -p harbor-offline-installer-v2.5.4.tgz /root
[root@reg packages]# cd
[root@reg ~]# tar zxf harbor-offline-installer-v2.5.4.tgz
[root@reg ~]# cd harbor
[root@reg harbor]# cp harbor.yml.tmpl harbor.yml
# 需要修改内容如下(如果一致,不变即可):
[root@reg harbor]# vim harbor.yml
5 hostname: reg.dhj.org
17 certificate: /data/certs/kaser.org.crt # 看自己的存放位置
18 private_key: /data/certs/kaser.org.key # 看自己的存放位置
34 harbor_admin_password: admin # 初始密码
47 data_volume: /data # 此处挂载的目录(需要跟上面证书与密钥在一个目录下)
# 根据 --help 反馈出来的参数来执行脚本时添加参数
harbor]# ./install.sh --help
[root@reg harbor]# ./install.sh --with-chartmuseum
# 将yml里面第一行的version行删去
[root@reg harbor]# vim docker-compose.yml
[root@reg harbor]# systemctl daemon-reload
[root@reg harbor]# systemctl restart docker
[root@reg harbor]# docker compose down
[root@reg harbor]# docker compose up -d
# 去浏览器中去测试 172.25.254.5
[root@reg ~]# cd /etc/docker/
[root@reg docker]# vim daemon.json
{
"registry-mirrors": ["https://reg.kaser.org"]
}
[root@reg docker]# systemctl restart docker
[root@reg docker]# docker logout reg.kaser.org
~]# cd harbor/
[root@reg harbor]# docker compose restart
[root@reg harbor]# docker login reg.dhj.org -uadmin -padmin
~]# docker info | grep "reg.kaser.org"
# 测试是否成功:打包一个镜像并推送到私有仓库并查看是否推送成功
[root@reg ~]# cd /mnt/packages
[root@reg packages]# docker load -i centos-7.tar.gz
[root@reg packages]# docker tag centos:7 reg.kaser.org/test/centos:7
[root@reg packages]# docker push reg.kaser.org/test/centos:7
[root@reg packages]# docker images
# 查看是否上传成功
[root@reg packages]# curl -k https://reg.kaser.org/v2/_catalog -uadmin:admin
{"repositories":["test/alpine","test/centos"]}
# v2/_catalog 是 Docker Registry API v2 版本中的一个特定端点(endpoint)
# 用于列出私有镜像仓库(Registry)中所有可用的镜像仓库名称。
# 成功即为部署完成!
# 更激进一点测试,在终端上
[root@reg harbor]# docker rmi reg.kaser.org/test/alpine:v1
# 将本地的镜像删除之后,从Harbor上拉取,查看是否可以拉取成功
[root@reg harbor]# docker pull reg.kaser.org/test/alpine:v1
[root@reg harbor]# docker images
# v2/_catalog 是 Docker Registry API v2 版本中的一个特定端点(endpoint)
# 用于列出私有镜像仓库(Registry)中所有可用的镜像仓库名称。
# 成功即为部署完成!
# 下面为将Harbor仓库部署到其余主机上去
ceshi ~]# mkdir /etc/docker/certs.d/reg.kaser.org/ -p
[root@reg ~]# scp /etc/docker/certs.d/reg.dhj.org/ca.crt root@172.25.254.10:/etc/docker/certs.d/reg.kaser.org/ca.crt
ceshi ~]# systemctl restart docker
ceshi ~]# systemctl enable --now docker
# 此时需要将docker作为我们的默认库
# 编写主机的镜像库的加速节点(这里以master主机为例,编写好之后进行scp即可)
ceshi docker]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.kaser.org"]
}
[root@reg ~]# scp /etc/docker/daemon.json root@172.25.254.10:/etc/docker/daemon.json
ceshi ~]# systemctl daemon-reload
ceshi ~]# systemctl restart docker
# 登陆harbor仓库
ceshi ~]# docker login reg.kaser.org -uadmin -padmin
更多推荐



所有评论(0)