侧边栏壁纸
博主头像
博客巢 博主等级

行动起来,活在当下

  • 累计撰写 12 篇文章
  • 累计创建 15 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

搭建harbor镜像仓库

博客巢
2024-11-11 / 0 评论 / 1 点赞 / 86 阅读 / 0 字
温馨提示:
本文最后更新于2024-11-14,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

注意:搭建harbor需要有docker和docker Compose

安装docker

Docker一键安装

docker配置从自建harbor拉取镜像

修改 /etc/docker/daemon.json 文件,以下是我的配置文件。

注意:下面都是可选项!!!本片文章只需要在insecure-registries里添加 harbor的域名或者ip 如果是https就在registry-mirrors添加。我的harbor地址是 http://harbor.od.com 所以只在insecure-registries 添加。

{
	# 设置 Docker 数据根目录。这个目录用于存储 Docker 的所有数据,包括镜像、容器等。(可选)
	"data-root": "/data/docker",
	
	# 配置存储驱动。在此使用 "overlay2" 作为存储驱动,它是 Docker 推荐的驱动,提供较好的性能。(可选)
	"storage-driver": "overlay2",
	
	# 配置 Docker 可以接受的非安全镜像仓库地址。在这些地址上,Docker 会信任并允许从这些地址拉取镜像。(可选)
	"insecure-registries": [
		"registry.access.redhat.com",  // RedHat 官方镜像仓库
		"quay.io",  // Quay.io 是一个公共镜像仓库,通常用于容器镜像存储
		"harbor.od.com"  // 内部私有镜像仓库,域名可能属于特定企业或组织
	],
	
	# 配置 Docker 镜像的加速器地址。这些地址可以提高拉取镜像时的速度,特别是对于中国地区用户。(可选)
	"registry-mirrors": [
		"https://proxy.1panel.live",
		"https://dockerproxy.cn",
		"https://hub1.nat.tf"
	],
	
	# 配置 Docker 的网络设置,指定 Docker 网络桥接接口的 IP 地址范围。这里设置的是 172.7.200.1/24 网络。(可选)
	# 它表示 Docker 将会使用这个 IP 范围为容器分配 IP 地址。
	"bip": "172.7.200.1/24",
	
	# 配置 Docker 使用 systemd 作为 cgroup 驱动程序。默认情况下,Docker 使用 cgroupfs,但如果你使用的是 systemd 管理系统,
	# 可以通过此选项将 cgroup 驱动程序切换为 systemd,确保与系统的其他部分兼容。(可选)
	"exec-opts": [
		"native.cgroupdriver=systemd"
	],
	
	# 配置 Docker 容器在 Docker 引擎停止或重新启动时仍然继续运行。启用这个选项可以确保 Docker 引擎重新启动时,
	# 容器状态不会丢失,也就是说容器在 Docker 引擎重启后会尽可能恢复运行。(可选)
	"live-restore": true
}

安装harbor

github地址:Releases · goharbor/harbor(建议服务器内存大点毕竟软件本身需要保存镜像)

下载offlineimage.png

服务器创建目录

mkdir -p /data/src

把这个下载好的文件放到/opt/src里(我这使用的是xftp)

使用命令解压并且解压到opt

tar zxvf harbor-offline-installer-v2.12.0.tgz -C /opt/
cd /opt/
# 重命名
mv harbor/ harbor-v2.12.0

先创建/data/harbor/目录

mkdir -p /data/harbor

修改harbor的配置文件

cd /opt/harbor-v2.12.0
# 将 harbor.yml.tmpl 文件复制为 harbor.yml 文件
cp harbor.yml.tmpl harbor.yml
# 修改harbor.yml
nano harbor.yml

harbor.yml 文件修改的地方

把软件包做版本标识,做一个软链接,便于以后升级

cd /opt/
# 做一个软链接
ln -s /opt/harbor-v2.12.0/ /opt/harbor
# 查看软连接
ls -l

特性

软连接(Symbolic Link)

硬链接(Hard Link)

指向目标

指向路径

指向数据(inode)

跨文件系统

支持

不支持

对象类型

可以指向文件或目录

只能指向文件

删除影响

删除目标后软连接失效

删除任意一个链接不影响其他链接

占用 inode

使用新的 inode

共享相同的 inode

适用场景

更灵活,适合目录、跨分区链接

适合备份文件或给文件创建多个名称

这两个东西 第一个是软连接的指向,第二个是源目录。

启动harbor

/opt/harbor/install.sh

使用docker-compose ps 查看启动的容器,下面的是正常启动了

如果是 (health:starting)就重新启动

# 记得在dockerfile下执行
docker-compose down 
docker-compose up -d

安装nginx

apt install nginx -y

配置harbor代理

# 创建或修改harbor.od.com.conf文件
nano /etc/nginx/conf.d/harbor.od.com.conf
# 复制以下内容到harbor.od.com.conf文件里
server {
    listen       80;                   # 监听 80 端口,HTTP 默认端口
    server_name  harbor.od.com;        # 配置虚拟主机的域名为 harbor.od.com

    client_max_body_size 1000m;        # 设置客户端请求的最大允许体积为 1000 MB(适用于上传文件的大小限制)

    location / {                       # 定义对根路径("/")的请求的处理方式
        proxy_pass http://127.0.0.1:180;  # 将请求代理转发到本地的 127.0.0.1:180 上
    }
}
# 测试nginx文件是否有误
nginx -t

nginx命令

选项

解释

-?-h

显示帮助信息。

-v

显示版本信息并退出。

-V

显示版本信息及编译配置选项并退出。

-t

测试配置文件的正确性并退出,不会启动 nginx

-T

测试配置文件的正确性,输出配置文件内容并退出。

-q

测试配置文件时,隐藏非错误消息。

-s signal

向主进程发送信号,可选值有:stop(立即停止)、quit(优雅退出)、reopen(重新打开日志)、reload(重新加载配置)。

-p prefix

设置 nginx 的安装路径前缀(默认为 /usr/share/nginx/)。

-e filename

设置错误日志文件路径(默认为标准错误输出 stderr)。

-c filename

指定 nginx 的配置文件路径(默认路径为 /etc/nginx/nginx.conf)。

-g directives

在配置文件之外设置全局指令,适用于快速设置全局配置。

启动nginx并设置自启

systemctl start nginx
systemctl enable nginx

遇到的问题

如果访问浏览器访问 harbor.od.com 触发了默认配置,我们在conf.d 配置的没生效

查看/etc/ngnix/nginx.conf 里面主要导入了两个配置项,路由触发了sites-enabled里的默认配置,我偷懒了直接把两个导入的配置优先级换一下就行了

# 这个是主要的配置,我们把配置都放在这里面了
include /etc/nginx/conf.d/*.conf; 
# 这个是做软链接启动的站点配置,这里面会有一个default文件,目前触发了这个配置。
include /etc/nginx/sites-enabled/*;

sites-available 的作用

  • 目录位置:通常位于 /etc/nginx/sites-available/

  • 作用sites-available 目录用于存放所有站点的完整配置文件,但存放在这里的配置文件不会被自动加载。

  • 用途:这个目录中保存的是“候选”站点配置,系统管理员可以在这里创建和编辑站点配置文件,然后决定是否启用这些站点配置。

sites-availablesites-enabled 的关系

  • sites-available:用于存放所有站点的配置文件,无论启用与否都可以存放在这里,便于统一管理。

  • sites-enabled:用于存放启用的站点配置文件的“符号链接”。只有放在 sites-enabled 中的符号链接(指向 sites-available 中的配置文件)才会被 Nginx 加载。

如何使用 sites-availablesites-enabled 启用或禁用站点

创建站点配置文件: 在 sites-available 中创建一个新的站点配置文件。例如创建一个 example.com 的站点:

sudo nano /etc/nginx/sites-available/example.com

启用站点: 要启用这个站点,创建一个符号链接,将 sites-available 中的配置文件链接到 sites-enabled 中:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

禁用站点: 要禁用站点,只需删除 sites-enabled 中的符号链接:

sudo rm /etc/nginx/sites-enabled/example.com

重新加载 Nginx: 启用或禁用站点后,重新加载 Nginx 以应用更改:

sudo systemctl reload nginx

以下内容适合自建DNS解析

自建的DNS在192.168.153.11上,目前harbor部署到192.168.153.200上,resolv.conf指向的dns是192.168.153.11上,所以我需要增加对192.168.153.200 dns A记录

# 修改文件
nano /var/cache/bind/od.com.zone
# 增加
192.168.153.200 A记录

这是我修改的配置文件,

# 重启192.168.153.11上自建dns服务
systemctl restart named

使用 nslookup 或者类似的工具查看域名的A记录,出现你配置的记录就成功了

测试harbor

测试推送镜像到harbor的public里

# 随便拉取一个镜像
docker pull nginx
# 查找刚下载好的镜像然后手动复制 IMAGE ID
docker images | grep nginx
# 将镜像 60c8a892f36f 打上新的标签 harbor.od.com/public/nginx:latest,使其能够推送到指定的 Docker 仓库,并且可以通过新的标签来引用这个镜像
docker tag 60c8a892f36f harbor.od.com/public/nginx:latest
# 查看镜像,在里面就会看到 harbor.od.com/public/nginx:latest 镜像
docker images
# 尝试推送镜像到harbor
docker push harbor.od.com/public/nginx:latest

出现以下未登录的问题

# 登录远程镜像仓库,输入harbor的账号密码
docker login harbor.od.com

登录成功,再重新 push。

网站上打开推送harbor的仓库地址就看到已经存在镜像了

1

评论区