Mac上安装Harbor并配置一、什么是Harbor为什么要用Harbor是一个开源的容器镜像仓库专门用于存储和管理Docker镜像。想象一下如果你在本地开发了一个Python应用想要在服务器上运行通常需要把代码打包成Docker镜像。而Harbor就像是一个“网盘”让你可以安全地上传、下载和管理这些镜像。相比Docker Hub公共仓库Harbor是私有仓库适合企业内部使用能更好地控制访问权限和镜像版本。在Mac上安装Harbor可以让你在本地开发环境中轻松管理镜像尤其适合需要离线开发或对镜像安全性有要求的场景。本文将手把手带你在Mac上安装和配置Harbor并附上实际代码示例。### 二、环境准备在开始之前确保你的Mac满足以下条件- 安装了Docker Desktop建议版本20.10以上- 有至少4GB内存和20GB磁盘空间- 网络环境能访问GitHub和Docker Hub用于下载依赖如果你还没装Docker可以到官网下载并安装安装后运行docker --version验证。### 三、下载并安装HarborHarbor提供了两种部署方式在线安装和离线安装。离线安装更适合稳定环境但为了演示我们使用在线安装自动下载依赖。#### 步骤1下载Harbor安装包打开终端进入你想存放Harbor的目录比如~/harbor然后下载最新版本以2.11.0为例bashcd ~/harborcurl -L https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-online-installer-v2.11.0.tgz -o harbor-online-installer.tgz如果下载慢可以改用镜像源如国内GitHub加速或者直接下载离线包约1.5GB。解压后进入目录bashtar -xzf harbor-online-installer.tgzcd harbor#### 步骤2生成配置文件Harbor依赖一个harbor.yml文件来配置参数。你可以从模板复制一份bashcp harbor.yml.tmpl harbor.yml然后编辑harbor.yml修改关键参数用文本编辑器打开比如vim harbor.yml。重点修改以下内容-hostname: 改成你的Mac IP地址或域名。例如hostname: 192.168.1.100用ifconfig查看你的IP-harbor_admin_password: 设置管理员密码比如harbor12345-data_volume: 镜像存储路径建议改为/Users/你的用户名/harbor_data确保目录存在保存后运行安装脚本。注意首次安装需要生成TLS证书HTTPS但为了演示简单我们先用HTTP模式。修改harbor.yml中yaml# 注释掉https部分# https:# port: 443# certificate: /your/certificate/path# private_key: /your/private/key/path#### 步骤3启动Harbor执行安装脚本它会下载Docker镜像并启动所有服务bashsudo ./install.sh如果遇到权限问题可以加sudo。安装过程会显示类似“Installing Harbor…”的进度。成功后你会看到“Harbor has been installed successfully.”的提示。### 四、验证安装并登录安装完成后打开浏览器输入http://你的IP地址:80默认端口。看到Harbor登录界面说明成功。用默认账号admin和密码harbor12345登录你之前设置的。登录后你可以创建项目Project比如“my-project”。每个项目相当于一个命名空间用于隔离不同团队的镜像。### 五、配置Docker客户端要让Docker命令能推拉Harbor上的镜像需要先登录。在终端中执行bashdocker login 你的IP地址:80输入刚才的账号密码。如果提示“Login Succeeded”说明配置成功。注意如果是HTTP模式Docker默认会拒绝需要配置Docker daemon允许不安全注册。编辑~/.docker/daemon.json如果不存在就创建添加json{ insecure-registries: [你的IP地址:80]}然后重启Docker Desktop在菜单栏点击“重启”。### 六、代码示例推送和拉取镜像现在来实践一下。假设我们有一个简单的Python Flask应用先构建镜像再推送到Harbor。#### 示例1构建并推送镜像创建一个app.py文件用于演示的简单Web应用python# app.py - 一个简单的Flask Web应用from flask import Flaskapp Flask(__name__)app.route(/)def hello(): return Hello from Harbor!if __name__ __main__: app.run(host0.0.0.0, port5000)再创建Dockerfiledockerfile# Dockerfile - 构建镜像FROM python:3.9-slimWORKDIR /appCOPY app.py .RUN pip install flaskEXPOSE 5000CMD [python, app.py]构建镜像并打上Harbor标签192.168.1.100替换为你的IPbash# 构建本地镜像docker build -t flask-app:latest .# 打标签Harbor地址/项目名/镜像名:版本docker tag flask-app:latest 192.168.1.100/my-project/flask-app:v1# 推送到Harbordocker push 192.168.1.100/my-project/flask-app:v1#### 示例2从Harbor拉取并运行从其他机器或同一台Mac拉取刚才推送的镜像并运行bash# 登录Harbor如果还没登录docker login 192.168.1.100:80# 拉取镜像docker pull 192.168.1.100/my-project/flask-app:v1# 运行容器docker run -d -p 5000:5000 192.168.1.100/my-project/flask-app:v1打开浏览器访问http://localhost:5000应该看到“Hello from Harbor!”。这说明镜像成功从Harbor拉取并运行。### 七、常见问题与优化#### 问题1安装失败提示“Error: …”最常见的是端口冲突。Harbor默认占用80和443端口如果Mac上已有其他服务如Apache可以修改harbor.yml中的http.port为其他端口比如8080。修改后重新运行sudo ./install.sh。#### 问题2推送镜像超时或失败检查网络和防火墙。如果使用公司网络可能需要配置代理。另外确保磁盘空间充足——Harbor的数据目录默认在/data建议改到外置硬盘或大容量分区。#### 优化启用HTTPS生产环境必须用HTTPS。你可以用Let’s Encrypt生成免费证书或者在harbor.yml中配置自签名证书。这里不展开但记得改回https部分的配置。### 八、总结本文从零开始介绍了在Mac上安装Harbor私有仓库的完整流程包括环境准备、下载安装、配置Docker客户端以及通过两个代码示例演示了镜像的推送和拉取。Harbor不仅是一个镜像存储工具还提供了权限管理、镜像复制等企业级功能。通过本地部署你可以安全地管理自己的镜像尤其适合团队协作或离线开发场景。希望这篇教程能帮你顺利上手Harbor让容器化开发更加高效。