7.4 自动化构建(镜像仓库Harbor)

系列 - 自动化构建与持续集成
Harbor简介
Harbor 是一个开源的企业级 Docker 镜像仓库服务器,用于存储和分发 Docker 镜像。它提供了基于角色的访问控制、镜像扫描、漏洞分析等企业级功能,是 Kubernetes 和 Docker 环境中常用的私有镜像仓库解决方案。

Harbor简介

1、下载安装文件

bash

cd /srv
wget http://192.168.192.199:8080/harbor-offline-installer-v2.10.2.tgz

2、解压安装文件

bash

tar xvf harbor-offline-installer-v2.10.2.tgz

3、准备配置文件

bash

cd /srv/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

修改以下内容:

yaml

hostname: 192.168.192.240  # 这里配置的监听地址,换成你自己的服务器IP
port: 9000 #监听端口
data_volume: /srv/harbor/data  #配置数据目录
配置文件修改提示

需要注释或删除文件中关于 HTTPS 的部分,默认是13行到18行。在生产环境中,建议配置 HTTPS 以提高安全性,但在实验环境中可以先使用 HTTP。

注释或删除

1、安装 Harbor

bash

# 准备工作主要是下载镜像并生成配置文件
./prepare
# 安装并启动
./install.sh

安装完成

信息
Harbor 安装过程会自动拉取和启动多个 Docker 容器,包括 nginx、registry、redis 等组件。整个过程可能需要几分钟时间,具体取决于网络环境和系统性能。

2、验证是否安装成功

浏览器打开 IP:9000

看到如下登录界面,说明 Harbor 已成功部署:

登录页面

默认登录凭证
默认的用户名是:admin 默认密码是:Harbor12345

现在来尝试使用 Docker 客户端登录到 Harbor 仓库,并进行基本操作。

1、使用 Docker 登录 Harbor

bash

docker login -u admin -p Harbor12345 IP:9000 

登录报错

常见错误
如上图所示,首次登录时可能会遇到证书问题。这是因为我们使用的是 HTTP 而非 HTTPS,需要在 Docker 客户端配置允许不安全的仓库。

2、修改 Docker 配置文件

bash

vim /etc/docker/daemon.json

文件内容:

json

{
  "registry-mirrors": ["https://docker.seahi.me"],
	"insecure-registries": [
		"IP:9000"
	]
}

3、重启 Docker 服务

bash

systemctl restart docker

4、重新登录 Harbor 🔁

bash

docker login -u admin -p Harbor12345 IP:9000 
登录成功
成功登录后,你将看到 “Login Succeeded” 的提示信息。现在你可以开始推送和拉取镜像了。
注意
在 Harbor 网页上,新建一个名为 library 的项目

1、标记一个本地镜像,准备推送到 Harbor

bash

# 拉取一个测试镜像
docker pull nginx:latest

# 给镜像打标签,指向你的 Harbor 仓库
docker tag nginx:latest IP:9000/library/nginx:v1

2、推送镜像到 Harbor

bash

docker push IP:9000/library/nginx:v1

使用 Sublime Merge 将昨天的项目克隆到本地,修改 .drone.yml

文件内容如下,增加了镜像信息和镜像仓库信息

yml

kind: pipeline
type: docker
name: build

steps: 
  - name: 构建并推送镜像
    image: plugins/docker 
    settings:
      dockerfile: Dockerfile
      # 镜像信息
      repo: 192.168.192.199:9000/library/pacman 
      tags: latest
      # 镜像仓库
      registry: 192.168.192.199:9000
      username: "admin"
      password: "Harbor12345"
      
      mirror: https://docker.seahi.me # 指定使用国内镜像加速器
      # dry_run: true # 注释或删除这一行,否则不进行推送

修改完成后,使用 Sublime Merge 将文件上传到代码仓库,观察构建过程,如果构建成功,查看 Harbor 中是否有镜像。

相关内容