harbor安装以及推送镜像到harbor

发布于:2025-02-10 ⋅ 阅读:(41) ⋅ 点赞:(0)

harbor安装以及将jar包制作成docker镜像推送到harbor仓库

Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,以下是在 Linux 系统(以 CentOS 7 为例)上搭建 Harbor 的详细流程:

1. 环境准备

1.1 系统要求
  • 操作系统:CentOS 7 及以上版本
  • 硬件:至少 2 CPU、4GB 内存
1.2 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.3 安装 Docker
# 添加 Docker 官方 yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
1.4 安装 Docker Compose
# 下载 Docker Compose 二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

2. 下载并配置 Harbor

2.1 下载 Harbor

访问 Harbor 官方发布页面,选择合适的版本进行下载。

wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz
2.2 解压文件
tar xvf harbor-offline-installer-v2.8.0.tgz
cd harbor
2.3 配置 Harbor

复制示例配置文件并进行编辑:

cp harbor.yml.tmpl harbor.yml
vi harbor.yml

主要修改以下配置项:

# 配置 Harbor 的访问地址
hostname: your_domain_or_ip

# 配置 Harbor 的端口号
port: 80

# 配置 Harbor 的管理员密码
harbor_admin_password: Harbor12345

# 配置数据存储目录
data_volume: /data/harbor

3. 安装并启动 Harbor

3.1 执行安装脚本
sudo ./install.sh

安装过程中会根据配置文件生成 Docker Compose 文件,并启动 Harbor 相关服务。

3.2 验证 Harbor 服务

安装完成后,可以使用以下命令查看 Harbor 服务的运行状态:

docker-compose ps

如果看到 harbor-coreharbor-dbharbor-registry 等服务都处于 Up 状态,则表示 Harbor 服务已成功启动。

4. 配置 Docker 客户端

为了让 Docker 客户端能够访问 Harbor,需要在 /etc/docker/daemon.json 文件中添加 Harbor 的地址:

sudo vi /etc/docker/daemon.json

添加以下内容: “insecure-registries”: [“ip:端口”]

{
    "insecure-registries": ["your_domain_or_ip"]
}

保存并退出文件后,重启 Docker 服务:

sudo systemctl restart docker

5. 使用 Harbor

5.1 登录 Harbor
docker login your_domain_or_ip

输入管理员用户名 admin 和之前配置的密码 Harbor12345 进行登录。

5.2.1重启harbor

Harbor 服务没有正常运行,会导致客户端无法连接。

  • 检查 Harbor 容器状态:如果你是通过 Docker Compose 安装的 Harbor,在 Harbor 安装目录下执行以下命令查看容器状态。

    docker-compose ps
    
  • 重启 Harbor 服务:若有容器未正常运行,使用以下命令重启 Harbor 服务。

docker-compose down
docker-compose up -d
5.2 推送和拉取镜像
# 标记本地镜像
docker tag nginx:latest your_domain_or_ip/library/nginx:latest

# 推送镜像到 Harbor
docker push your_domain_or_ip/library/nginx:latest

# 从 Harbor 拉取镜像
docker pull your_domain_or_ip/library/nginx:latest

以上就是在 Linux 系统上搭建 Harbor 的详细流程,按照上述步骤操作,你就可以成功搭建并使用自己的 Docker 镜像仓库了。

5.2.3 推送镜像到仓库脚本
#!/bin/bash

# 检查命令行参数数量
if [ $# -ne 5 ]; then
    echo "用法: $0 <Harbor 仓库地址> <Harbor 用户名> <Harbor 密码> <本地镜像名称和标签> <Harbor 项目名称>"
    exit 1
fi

HARBOR_HOST=$1
HARBOR_USER=$2
HARBOR_PASSWORD=$3
LOCAL_IMAGE=$4
HARBOR_PROJECT=$5

# 登录到 Harbor 仓库
docker login -u "$HARBOR_USER" -p "$HARBOR_PASSWORD" "$HARBOR_HOST"

# 检查登录是否成功
if [ $? -ne 0 ]; then
    echo "登录到 Harbor 仓库失败,请检查用户名和密码。"
    exit 1
fi

# 标记本地镜像以匹配 Harbor 仓库
REMOTE_IMAGE="$HARBOR_HOST/$HARBOR_PROJECT/$(echo $LOCAL_IMAGE | cut -d: -f1):$(echo $LOCAL_IMAGE | cut -d: -f2)"
docker tag "$LOCAL_IMAGE" "$REMOTE_IMAGE"

# 推送标记后的镜像到 Harbor 仓库
docker push "$REMOTE_IMAGE"

# 检查推送是否成功
if [ $? -eq 0 ]; then
    echo "镜像 $LOCAL_IMAGE 已成功推送到 $REMOTE_IMAGE"
else
    echo "推送镜像到 Harbor 仓库失败,请检查网络和镜像信息。"
fi

给脚本添加可执行权限

chmod +x push_to_harbor.sh

使用这个脚本时,你可以这样调用:如果有端口号带上端口号

./push_to_harbor.sh your_domain_or_ip admin Harbor12345 nginx:latest myproject

以下是将 JAR 包打包成 Docker 镜像并推送到 Harbor 仓库的详细步骤:

1. 环境准备

确保你已经安装了以下软件:

  • Java:用于运行 JAR 包,你可以通过 java -version 命令检查是否安装。
  • Docker:用于构建和管理 Docker 镜像,可通过 docker --version 验证。
  • Docker Compose(可选):用于管理多个 Docker 容器的编排。
  • Harbor 仓库:有可用的 Harbor 仓库地址、用户名和密码。

2. 创建项目结构

假设你的 JAR 包名为 app.jar,在项目根目录下创建如下结构:

project-root/
├── app.jar
└── Dockerfile

3. 编写 Dockerfile

在项目根目录下创建 Dockerfile 文件,内容如下:

# 使用基础镜像,这里选择 OpenJDK 17
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 将 JAR 包复制到工作目录
COPY app.jar app.jar

# 暴露应用程序的端口,根据实际情况修改
EXPOSE 8080

# 定义启动命令
CMD ["java", "-jar", "app.jar"]

4. 构建 Docker 镜像

在项目根目录下执行以下命令构建 Docker 镜像:

docker build -t your-harbor-host/your-project/your-image-name:your-tag .
  • your-harbor-host:Harbor 仓库的地址。
  • your-project:Harbor 仓库中的项目名称。
  • your-image-name:你要创建的镜像名称。
  • your-tag:镜像的标签,例如 latest
  • . 表示使用当前目录下的 Dockerfile 进行构建。

5. 登录到 Harbor 仓库

使用以下命令登录到 Harbor 仓库:

docker login your-harbor-host -u your-username -p your-password
  • your-username:Harbor 仓库的用户名。
  • your-password:Harbor 仓库的密码。

6. 推送 Docker 镜像到 Harbor 仓库

登录成功后,执行以下命令将构建好的镜像推送到 Harbor 仓库:

docker push your-harbor-host/your-project/your-image-name:your-tag

完整示例脚本

为了方便操作,你可以将上述步骤封装成一个脚本:

#!/bin/bash

# 定义变量
HARBOR_HOST="your-harbor-host"
HARBOR_PROJECT="your-project"
IMAGE_NAME="your-image-name"
TAG="latest"
JAR_FILE="app.jar"
USERNAME="your-username"
PASSWORD="your-password"

# 构建 Docker 镜像
docker build -t $HARBOR_HOST/$HARBOR_PROJECT/$IMAGE_NAME:$TAG .

# 登录到 Harbor 仓库
docker login $HARBOR_HOST -u $USERNAME -p $PASSWORD

# 推送镜像到 Harbor 仓库
docker push $HARBOR_HOST/$HARBOR_PROJECT/$IMAGE_NAME:$TAG

将上述脚本保存为 build_and_push.sh,并赋予执行权限:

chmod +x build_and_push.sh
./build_and_push.sh

注意事项

  • 确保你的 JAR 包和 Dockerfile 在同一目录下。
  • 检查 Dockerfile 中的端口号是否与你的应用程序实际使用的端口一致。
  • 如果 Harbor 仓库使用的是自签名证书,你可能需要在 Docker 客户端配置中添加 insecure-registries 选项。

通过以上步骤,你就可以将 JAR 包打包成 Docker 镜像并推送到 Harbor 仓库了。