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-core
、harbor-db
、harbor-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 仓库了。