Harbor从安装到摸鱼全攻略 🐳

Harbor从安装到摸鱼全攻略 🐳

一、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登录界面

image

像不像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

成功画面

镜像推送成功

image

此刻你已完成从“码头搬运工”到“仓库管理员”的蜕变!


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

解药

  1. 确认daemon.json配置了insecure-registries

  2. 重启Docker:systemctl restart docker

  3. 重启Harbor:docker compose down && docker compose up -d


Q2:推送镜像卡住怎么办?

可能原因

  • 网络抽风(尤其是离线版)

  • 磁盘空间不足(镜像太胖了)

排查步骤

docker compose logs -f  # 查看实时日志(像看剧本杀线索)
df -h  # 检查磁盘剩余空间(至少留10G)

Q3:忘记管理员密码?

终极解决方案

  1. 修改harbor.yml中的密码

  2. 重新执行./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码头起个酷炫的名字哦~ 🚢

© 版权声明
THE END
喜欢就支持一下吧
点赞21 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容