一、Harbor是啥?为啥要装它?
比喻时刻:
如果把Docker镜像比作快递包裹,Harbor就是个私人集装箱码头——不仅能存你的“宝贝镜像”,还能给它们贴标签、做安检、甚至搞个VIP通道!
使用场景:
-
团队开发时避免“镜像流浪地球”(每人电脑里镜像版本不同)
-
给自家项目镜像加把锁(权限管理)
-
做镜像界的B站UP主(私有仓库发布镜像)
二、安装篇:3步搞定Harbor
Step 1:先请个管家——Docker Compose
# 官方姿势(网速够快版)
DOCKER_CONFIG=/usr/local/lib/docker/cli-plugins
sudo mkdir -p $DOCKER_CONFIG/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64 -o DOCKER_CONFIG/cli-plugins/docker-compose
sudo chmod +x $DOCKER_CONFIG/cli-plugins
docker compose version
# 国内加速版(懂的都懂)
sudo curl -SL https://moka.anitsuri.top/images/Registry+Harbor/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
注:这步就像给Docker装个瑞士军刀,后面全靠它指挥!
Step 2:下载Harbor安装包
在线版 vs 离线版:
在线版(瘦身款) | 离线版(全家桶) | |
---|---|---|
体积 | 50MB(比表情包还小) | 1GB(含所有依赖) |
网速要求 | 需要稳定科学上网 | 断网也能装 |
适合场景 | 测试尝鲜 | 生产环境必备 |
实操命令:
# 下载离线包
sudo curl -O https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
# 国内用户可以使用以下方式加快下载
sudo curl -O https://moka.anitsuri.top/images/Registry+Harbor/harbor-offline-installer-v2.11.1.tgz
sudo tar -zxf harbor-offline-installer-v2.11.1.tgz
cd harbor
小剧场:解压时请想象自己在拆快递,里面装着你的“私人集装箱码头”!
Step 3:给Harbor写个“自我介绍”
修改配置文件,把 harbor.yml.tmpl
复制一个变成 harbor.yml
sudo cp harbor.yml.tmpl harbor.yml
sudo vi harbor.yml
修改harbor.yml
:
这个配置文件里有很多的配置字段,这里已经把要修改的给你挑出来了奥。
hostname: 192.168.92.128 # 换成你的服务器IP,别用localhost!
http:
port: 80 # 先用HTTP(HTTPS后面再折腾)
harbor_admin_password: Harbor12345 # 密码别用123456!
重点提醒:
-
IP写错会变成“无人码头”——别人找不到!
-
密码建议改成
ILoveDocker520
这类(但别真的用)
Step 4:启动!见证奇迹的时刻
./prepare # 检查配置(像考试前复习)
./install.sh # 开始安装(请保持虔诚表情)
安装成功标志:
终端出现绿色大字:✔----Harbor has been installed and started successfully.----
(如果报错,请默念三遍“程序员永不放弃”)
三、使用篇:从萌新到老司机
1. 首次登陆
浏览器打开http://你的IP
,输入:
-
账号:
admin
-
密码:
Harbor12345
(就是你刚才设的那个)
界面初体验:
Harbor登录界面
像不像Docker版的朋友圈?这就是你的镜像天地!
常见翻车现场:
-
报错
connection refused
?检查IP和daemon.json
配置 - 修改
/etc/docker/daemon.json
并加入如下内容,并重启Docker{ "insecure-registries": ["192.168.92.128"] #这里是自己主机的IP哟 } # 然后重启 Docker,下面的命令是编辑完上面的文件,退出后执行 sudo systemctl restart docker
这个原因是访问 HTTPS 被拒绝(我们只配置了 HTTP),需要关闭安全验证
2. 镜像上传全流程
举个栗子:上传一个Nginx镜像
# 拉取官方镜像(就像网购)
docker pull nginx:latest
# 给镜像贴个“地址标签”(告诉它要去哪个码头)
docker tag nginx:latest 192.168.92.128/library/nginx:V1.0
# 登录你的私人码头
docker login -u admin -p Harbor12345 http://192.168.92.128
# 开始发货!(推送到Harbor)
docker push 192.168.92.128/library/nginx:V1.0
成功画面:
镜像推送成功
此刻你已完成从“码头搬运工”到“仓库管理员”的蜕变!
3. 客户端怎么玩?
配置客户端:
修改/etc/docker/daemon.json
(记得sudo!)
{
"insecure-registries": ["192.168.92.128"] # 告诉Docker这个码头不用安检
}
拉取镜像:
docker pull 192.168.92.128/library/nginx:V1.0
常见翻车现场:
-
报错
connection refused
?检查IP和daemon.json
配置 -
提示权限不足?sudo大法好!
四、高阶操作:Harbor的隐藏技能
1. 项目管理(像整理朋友圈分组)
# 创建新项目(比如my-project)写自己的harbor仓库地址
curl -u admin:Harbor12345 -X POST "http://<harbor_url>/api/v2.0/projects" -H "Content-Type: application/json" -d '{
"project_name": "<my-project>",
"public": true
}'
# 查看所有项目
curl -u admin:Harbor12345 "http://IP/api/v2.0/projects" #这里的账号和密码你上面设置时什么就是什么,不要忘记哟普
应用场景:
-
把测试镜像和正式镜像分开(就像把自拍和工作照分开)
-
给不同团队开独立空间
2. 镜像大扫除
# 删除某个tag(像删朋友圈)
curl -u admin:Harbor12345 -X DELETE "http://IP/api/v2.0/projects/my-project/repositories/nginx/artifacts/V1.0"
# 删除整个仓库(慎重!)
curl -u admin:Harbor12345 -X DELETE "http://IP/api/v2.0/projects/my-project"
血泪教训:
删除前请三思,建议先喝杯咖啡冷静一下!
3. 备份与恢复(码头防灾指南)
备份数据库:
docker exec -it harbor-db pg_dumpall -U postgres > harbor_backup.sql
恢复数据库:
docker exec -i harbor-db psql -U postgres < harbor_backup.sql
说人话:
-
备份:给数据库拍个快照
-
恢复:时光倒流到备份时刻
五、常见问题急救包
Q1:登录提示HTTPS错误?
症状:Error response from daemon: ... connection refused
解药:
-
确认
daemon.json
配置了insecure-registries
-
重启Docker:
systemctl restart docker
-
重启Harbor:
docker compose down && docker compose up -d
Q2:推送镜像卡住怎么办?
可能原因:
-
网络抽风(尤其是离线版)
-
磁盘空间不足(镜像太胖了)
排查步骤:
docker compose logs -f # 查看实时日志(像看剧本杀线索)
df -h # 检查磁盘剩余空间(至少留10G)
Q3:忘记管理员密码?
终极解决方案:
-
修改
harbor.yml
中的密码 -
重新执行
./prepare && ./install.sh
(相当于把码头拆了重建…建议还是记在密码管理器)
六、摸鱼小技巧
1. 用Harbor玩梗
-
给镜像打标签时用
latest
以外的版本:docker tag nginx 192.168.1.100/library/nginx:老板说这个需求很简单
2. 制作专属错误页面
在Harbor的/data
目录放个404.html
,内容可以是:
<h1>镜像不存在!</h1>
<p>可能是因为:</p>
<ul>
<li>程序员还没写完</li>
<li>测试妹子删掉了</li>
<li>你网线被猫咬了</li>
</ul>
结语:
安装Harbor就像养电子宠物——初期需要耐心投喂命令,等它跑起来后,你就会拥有一个任劳任怨的镜像管家!下次见,记得给你的Harbor码头起个酷炫的名字哦~ 🚢
暂无评论内容