使用 Docker Compose 部署 Harbor 私有镜像仓库并完成镜像推送测试

一、实验目标

本文记录一次在 Ubuntu Server 上部署 Harbor 私有镜像仓库的过程。

本次目标:

1. 安装 Harbor
2. 使用 HTTP 暴露 Harbor Web 面板
3. 配置 Docker 信任私有仓库
4. 登录 Harbor
5. 推送 nginx 镜像到 Harbor
6. 验证 Harbor 私有镜像仓库可用
二、实验环境
项目 信息
系统 Ubuntu Server
主机名 k8s-master
Harbor IP 172.16.11.142
Harbor 访问方式 HTTP
Harbor 端口 80
部署方式 Docker Compose
Harbor 版本 v2.14.3
Docker 版本 29.1.3
Docker Compose 版本 2.37.1

Harbor 访问地址:

http://172.16.11.142
三、创建 Harbor 数据目录

创建 Harbor 持久化数据目录:

sudo mkdir -p /mnt/harbor/{registry,database,redis,chartmuseum,jobservice,trivy}

各目录作用:

registry # 存放镜像数据
database # 存放 Harbor 数据库数据
redis # 存放 Redis 缓存和任务数据
chartmuseum # 存放 Helm Chart 数据
jobservice # 存放任务服务数据
trivy # 存放漏洞扫描数据

检查目录:

ls -lh /mnt/harbor

检查挂载情况:

df -h /mnt/harbor

本次实验中 /mnt/harbor 仍然在系统盘 / 下:

/dev/mapper/ubuntu–vg-ubuntu–lv 48G 11G 36G 23% /

如果是生产环境,建议单独挂载大容量磁盘到 /mnt/harbor。

四、下载 Harbor Online 安装包

进入用户目录:

cd ~

下载 Harbor online 安装包:

wget -c https://github.com/goharbor/harbor/releases/download/v2.14.3/harbor-online-installer-v2.14.3.tgz

检查安装包:

ls -lh harbor-online-installer-v2.14.3.tgz

解压:

tar -zxvf harbor-online-installer-v2.14.3.tgz
cd harbor
ls -lh

正常可以看到类似文件:

install.sh
harbor.yml.tmpl
prepare
五、修改 Harbor 配置文件

复制模板文件:

cp harbor.yml.tmpl harbor.yml

编辑配置文件:

nano harbor.yml
1. 修改 hostname

找到:

hostname: reg.mydomain.com

改成当前 Harbor 服务器 IP:

hostname: 172.16.11.142
2. 保留 HTTP

确认 HTTP 配置如下:

http:
port: 80
3. 关闭 HTTPS

实验环境先关闭 HTTPS,把 https 相关配置注释掉:

# https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
# strong_ssl_ciphers: false
4. 修改数据目录

找到:

data_volume: /data

改成:

data_volume: /mnt/harbor

最终关键配置如下:

hostname: 172.16.11.142

http:
port: 80

# https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path

data_volume: /mnt/harbor

保存退出:

Ctrl + O
回车
Ctrl + X
六、配置 Docker 镜像加速

第一次安装时,Harbor 需要从 Docker Hub 拉取镜像。

如果出现类似错误:

Get “https://registry-1.docker.io/v2/”: connect: connection refused

可以配置 Docker 镜像加速。

创建 Docker 配置目录:

sudo mkdir -p /etc/docker

编辑配置文件:

sudo nano /etc/docker/daemon.json

写入以下内容:

{
“registry-mirrors”: [
“https://docker.m.daocloud.io”,
“https://docker.1ms.run”,
“https://docker.1panel.live”
]
}

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

测试拉取 Harbor prepare 镜像:

sudo docker pull goharbor/prepare:v2.14.3

成功输出类似:

Status: Downloaded newer image for goharbor/prepare:v2.14.3
docker.io/goharbor/prepare:v2.14.3
七、安装 Harbor

进入 Harbor 目录:

cd ~/harbor

执行安装:

sudo ./install.sh

安装完成后会看到:

✔ —-Harbor has been installed and started successfully.—-

这说明 Harbor 安装成功。

八、检查 Harbor 容器状态

查看 Docker Compose 服务状态:

cd ~/harbor
sudo docker compose ps

查看正在运行的容器:

sudo docker ps

检查 80 端口:

sudo ss -lntp | grep ‘:80’

正常应该看到类似:

LISTEN 0 4096 0.0.0.0:80 0.0.0.0:* users:((“docker-proxy”,pid=xxxx,fd=7))
九、访问 Harbor 面板

浏览器访问:

http://172.16.11.142

默认用户名:

admin

密码查看配置文件:

grep harbor_admin_password ~/harbor/harbor.yml

登录成功后,进入 Harbor Web 管理面板。

十、创建项目

在 Harbor 面板中:

项目 → 新建项目

项目名建议:

library

本次测试使用:

library
十一、配置 Docker 信任 HTTP 私有仓库

因为本次 Harbor 使用的是 HTTP,不是 HTTPS,所以 Docker 默认可能不允许登录和推送。

编辑 Docker 配置:

sudo nano /etc/docker/daemon.json

完整配置如下:

{
“registry-mirrors”: [
“https://docker.m.daocloud.io”,
“https://docker.1ms.run”,
“https://docker.1panel.live”
],
“insecure-registries”: [
“172.16.11.142”
]
}

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:重启 Docker 后 Harbor 容器可能会停止,需要重新启动 Harbor:

cd ~/harbor
sudo docker compose up -d
sudo docker compose ps

再次检查端口:

sudo ss -lntp | grep ‘:80’
十二、登录 Harbor

执行:

sudo docker login 172.16.11.142

输入:

Username: admin
Password: Harbor 管理员密码

成功后会显示:

Login Succeeded

如果出现:

connect: connection refused

说明 Harbor 没启动,执行:

cd ~/harbor
sudo docker compose up -d
sudo docker compose ps
十三、推送 nginx 镜像到 Harbor

拉取 nginx 镜像:

sudo docker pull nginx:latest

给镜像重新打标签:

sudo docker tag nginx:latest 172.16.11.142/library/nginx:latest

推送到 Harbor:

sudo docker push 172.16.11.142/library/nginx:latest

推送成功会看到:

Pushed
latest: digest: sha256:xxxxxxxxxxxxxxxx size: 1778

本次实验成功输出:

latest: digest: sha256:e8490d0e8088a664e37b73579bea079d66385f42cf0dd814a77d53a5ee40776e size: 1778
十四、在 Harbor 面板验证

进入 Harbor Web 面板:

项目 → library → 镜像仓库

可以看到:

nginx

进入镜像后,可以看到标签:

latest

这说明 nginx 镜像已经成功推送到 Harbor 私有镜像仓库。

十五、测试从 Harbor 拉取镜像

先删除本地 Harbor tag:

sudo docker rmi 172.16.11.142/library/nginx:latest

再从 Harbor 拉取:

sudo docker pull 172.16.11.142/library/nginx:latest

如果能够成功拉取,说明 Harbor 的推送和拉取流程已经完整打通。

十六、常见问题总结
1. 找不到安装包

报错:

Cannot open: No such file or directory

原因:

当前目录没有 Harbor 安装包

解决:

ls
find ~ -name “harbor-*.tgz”

如果没有,就需要重新下载。

2. install.sh 找不到

报错:

sudo: ./install.sh: command not found

原因:

没有进入 harbor 解压目录

解决:

cd ~/harbor
sudo ./install.sh
3. Docker Hub 拉取失败

报错:

Get “https://registry-1.docker.io/v2/”: connect: connection refused

解决:

sudo nano /etc/docker/daemon.json

添加镜像加速:

{
“registry-mirrors”: [
“https://docker.m.daocloud.io”,
“https://docker.1ms.run”,
“https://docker.1panel.live”
]
}

然后重启 Docker:

sudo systemctl restart docker
4. Docker login 连接被拒绝

报错:

dial tcp 172.16.11.142:80: connect: connection refused

原因:

Harbor 容器没有启动,或者 80 端口没有监听

解决:

cd ~/harbor
sudo docker compose up -d
sudo docker compose ps
sudo ss -lntp | grep ‘:80’
5. HTTP 私有仓库无法登录

原因:

Docker 默认更信任 HTTPS 仓库

解决:

{
“insecure-registries”: [
“172.16.11.142”
]
}

然后重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
十七、实验总结

本次实验完成了 Harbor 私有镜像仓库的部署和基础测试。

最终完成内容:

1. Harbor 安装成功
2. Harbor Web 面板访问成功
3. Docker 登录 Harbor 成功
4. 创建 library 项目
5. 推送 nginx:latest 镜像成功
6. Harbor 私有镜像仓库验证成功

本次 Harbor 地址:

http://172.16.11.142

测试镜像地址:

172.16.11.142/library/nginx:latest

至此,一个基础版 Harbor 私有镜像仓库已经搭建完成,可以用于后续 Kubernetes 镜像托管、CI/CD 镜像发布、内网镜像加速等场景。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇