利用 Harbor 创建自己的镜像仓库
利用 Harbor 创建自己的镜像仓库。
下载 Harbor,地址:https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
完成后解压
tar -zxvf harbor-offline-installer-v2.8.2.tgz
cd harbor
setenforce 0
设置主机名
hostnamectl set-hostname node1.example.com
修改配置文件
cp harbor.yml.tmpl harbor.yml
# 进入配置文件
vim harbor.yml
# 下为要修改的地方
hostname: node1.example.com // 添加主机名
# 注释掉证书,如果不使用证书就需要注释
# https related config
#https:
# https port for harbor, default is 443
# port: 443 // 注释
# The path of cert and key files for nginx
# certificate: /your/certificate/path // 注释
# private_key: /your/private/key/path // 注释
harbor_admin_password: Harbor12345 // 默认的登录密码
// 以上这些需要修改,其余保持默认
添加主机映射
192.168.179.3 node1.example.com
完成后开始安装
./install.sh
安装完成后会在当前目录产生 docker-compose.yaml 文件,运行这个文件,此后会产生多个容器,包含了它自己集成的 redis、mysql 等。
查看端口占用
ss -antl
使用配置文件中的默认密码登录
新建一个项目,如名称叫做: shop
登录你的仓库
docker login 192.168.179.3:8001 -u admin -p Harbor12345
如果在推送的时候报这个错
Get "https://192.168.179.3:8801/v2/": dial tcp 192.168.179.3:8801: connect: connection refused
是因为 docker 默认使用 https,如果是在本地的话不需要 https,则配置 /etc/docker/daemon.json
文件
vim /etc/docker/daemon.json
加入你的仓库,然后重启 docker。记得端口也要加进去,也就是你的 Harbor 的端口,它是通过配置文件 harbor.yml
声明。
{
"insecure-registries": ["192.168.179.3:8001"]
}
注意事项
一、如果报这个错:
Error response from daemon: Get "https://harbor.xxx.com/v2/": Get "http://debian:8091/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry": dial tcp: lookup debian on 223.5.5.5:53: no such host
则是由于 Docker 守护进程无法解析主机名 debian 导致的,在你自己的机器做以下两项修改:
# 将 harbor.xxx.com 的实际 ip 加入到 host 映射中
vim /etc/hosts
192.168.23.66 debian
# 修改 daemon.json 文件
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://harbor.xxx.com"],
}
二、我们的私有库是搭建在本地的测试环境主机中,我们在线上拉取镜像的时候 docker pull 会对域名进行解析,当请求进入测试环境的时候,如果没有做相应配置,则会报以下错误:
err: Network traefik is external, skipping
err: Pulling ****** (harbor.aaa.com/xxx/******:c096322f91)...
err: Head "https://harbor.aaa.com/v2/xxx/******/manifests/c096322f91": Get "http://debian:8091/service/token?account=admin&scope=repository%3Abluetti%2F******%3Apull&service=harbor-registry": dial tcp: lookup debian on 100.100.2.138:53: no such host
2023/07/24 03:31:26 Process exited with status 1
这时候需要将 harbor 的配置修改为对应的实际地址,修改 harbor 项目目录下的文件:
vim harbor/common/config/core/env
将里面的 EXT_ENDPOINT 改为实际的地址,这里对应的就是改为下面的即可
https://harbor.aaa.com
完成后重载或者重启 docker
systemctl daemon-reload
systemctl reload docker
systemctl restart docker
推送镜像
docker tag [ImageId] 192.168.179.3:8001/shop/你的自定义镜像名称:[tagID]
docker tag f3a2b68ebe58 192.168.179.3:8001/shop/test:v1.0
docker push 192.168.179.3:8001/shop/test:v1.0
声明: 因编程语言版本更新较快,当前文章所涉及的语法或某些特性相关的信息并不一定完全适用于您当前所使用的版本,请仔细甄别。文章内容仅作为学习和参考,若有错误,欢迎指正。