7.3 自动化构建(harbor)

系列 - 自动化构建与持续集成
目录
Harbor简介
Harbor 是一个开源的企业级 Docker 镜像仓库服务器,用于存储和分发 Docker 镜像。它提供了基于角色的访问控制、镜像扫描、漏洞分析等企业级功能,是 Kubernetes 和 Docker 环境中常用的私有镜像仓库解决方案。
准备工作 🛠️
在开始安装 Harbor 之前,我们需要确保系统环境满足要求,并准备好必要的配置文件。
环境准备 🖥️
1、安装缺失软件包 📦
yum install -y ca-certificates
2、下载安装文件 ⬇️
cd /srv
wget https://static.seahi.me/2024/05/harbor-offline-installer-v2.10.2.tgz
3、解压安装文件 📂
tar xvf harbor-offline-installer-v2.10.2.tgz
4、准备配置文件 ⚙️
cd /srv/harbor
cp -ar harbor.yml.tmpl harbor.yml
vim harbor.yml
修改以下内容:
hostname: 192.168.192.240 # 这里配置的监听地址,换成你自己的服务器IP
port: 9000 #监听端口
data_volume: /srv/harbor/data #配置数据仓库
配置文件修改提示
需要注释文件中关于 HTTPS 的部分,默认是13行到18行。在生产环境中,建议配置 HTTPS 以提高安全性,但在实验环境中可以先使用 HTTP。
实验过程 🚀
任务一:部署 Harbor 🐳
1、安装 Harbor
# 准备工作主要是下载镜像并生成配置文件
./prepare
# 安装并启动
./install.sh
信息
Harbor 安装过程会自动拉取和启动多个 Docker 容器,包括 nginx、registry、redis 等组件。整个过程可能需要几分钟时间 ⏳,取决于你的网络和系统性能。
2、验证是否安装成功 ✅
浏览器打开 192.168.192.240:9000
警告
请将 IP 地址替换为你自己服务器的 IP 地址
看到如下登录界面,说明 Harbor 已成功部署:
默认登录凭证
默认的用户名是:admin 👤
默认密码是:Harbor12345 🔑
首次登录后,建议立即修改默认密码以提高安全性 🔒。
任务二:试用 Harbor 🔍
现在我们来尝试使用 Docker 客户端登录到 Harbor 仓库,并进行基本操作。
1、使用 Docker 登录 Harbor 🚪
docker login -u admin -p Harbor12345 192.168.192.240:9000
常见错误
如上图所示,首次登录时可能会遇到证书问题 ⛔。这是因为我们使用的是 HTTP 而非 HTTPS,需要在 Docker 客户端配置允许不安全的仓库。
2、修改 Docker 配置文件 🔧
vim /etc/docker/daemon.json
添加以下内容:
{
"insecure-registries": [
"192.168.192.240:9000"
]
}
3、重启 Docker 服务 🔄
systemctl restart docker
4、重新登录 Harbor 🔁
docker login -u admin -p Harbor12345 192.168.192.240:9000
登录成功
成功登录后,你将看到 “Login Succeeded” 的提示信息 🎉。现在你可以开始推送和拉取镜像了。
任务三:推送和拉取镜像 🚢
1、标记一个本地镜像,准备推送到 Harbor 🏷️
# 拉取一个测试镜像
docker pull nginx:latest
# 给镜像打标签,指向你的 Harbor 仓库
docker tag nginx:latest 192.168.192.240:9000/library/nginx:v1
2、推送镜像到 Harbor ⬆️
docker push 192.168.192.240:9000/library/nginx:v1
3、从 Harbor 拉取镜像 ⬇️
# 先删除本地镜像进行测试
docker rmi 192.168.192.240:9000/library/nginx:v1
# 从 Harbor 拉取镜像
docker pull 192.168.192.240:9000/library/nginx:v1
小结 📑
摘要
通过本实验,我们成功完成了:
- Harbor 私有镜像仓库的部署 ✅
- 配置 Docker 客户端连接 Harbor 🔗
- 实现镜像的推送和拉取 🔄
Harbor 作为企业级镜像仓库 🗃️,不仅提供了基本的镜像存储功能,还具备权限控制 🔐、漏洞扫描 🔍 等高级特性,是容器化环境中不可或缺的基础设施。