【devops】八、集成Harbor(上)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【devops】八、集成Harbor(上)

说明


在Jenkins服务器上部署Harbor仓库,如果电脑内存允许,可以新加一台服务器部署Harbor。


八、集成Harbor


e7a33d194ffb4d6f9472a65c1c0879c0.png


8.1 Harbor介绍

前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当前jar进行部署,这种方式在项目较多时,每个目标服务器都需要将jar包制作成自定义镜像再通过docker进行启动,重复操作比较多,会降低项目部署时间。

我们可以通过Harbor作为私有的Docker镜像仓库。让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中,只需要通知目标服务器,让目标服务器统一去Harbor仓库上拉取镜像并在本地部署即可。

Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能。


8.2 Harbor安装——原生方式部署

这里采用原生的方式安装Harbor。

  1. 下载Harbor安装包:

https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz

  1. 将安装包拖拽到Linux系统中并解压:

tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/

注:-C 选项的作用是:指定需要解压到的目录。

  1. 修改Harbor配置文件:

① 首先复制一份harbor.yml配置

# 进入目录
cd /usr/local/harbor
# 复制一份yml文件,并编辑yml文件
cp harbor.yml.tmpl harbor.yml
vim harbor.yml


② 编辑harbor.yml配置文件

fb0da8c935a84ff583202be327eb0c7a.png

  1. 启动Harbor
cd /usr/local/harbor
./install.sh


如果想要停止harbor容器实例,命令如下

docker-compose down harbor
使用docker ps 查看容器实例,就发现harbor容器已经关闭 


查看日志:

04d7252b284c4f558c03833e528c1a01.png

5、登录Harbor

密码可以在/usr/local/harbor/harbor.yml文件中看

470e6ade1ee14cfab8ad7937ccd0346e.png

首页信息:

d568236c0248436f9e4efe38eeb58df9.png

8.3 Harbor使用方式

Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像。

在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像。

这里我使用的是公开的仓库。


8.3.1 添加用户构建项目
  1. 构建项目(设置为私有的话,后面从harbor上拉取镜像需要登录)
    我这里直接使用公开仓库了(记得勾选公开)

09e02dc3f1b84613b0e9d6038d4ace55.png


私有仓库创建步骤:

e864b304d12f4bb0bbdb70438ad4772a.png

创建用户:

fbf383e3f0254c1e98bed39c006a0a3c.png

给项目追加用户:

4d710a2e4d094415978d46209f8bb60f.png

切换测试用户:

ab902663b70d47cda50a4422a4633a52.png

8.3.2 发布镜像到Harbor
  1. 修改镜像名称
    名称要求:harbor地址/项目名/镜像名:版本
# 改名命令
docker tag [镜像id] 镜像仓库地址/项目名/镜像名:版本


这里我把mytest:v1.0.0镜像改名为:192.168.2.211:80/repo/mytest:v1.0.0

  1. 修改daemon.json文件,支持从Docker仓库拉取镜像,并重启Docker
vim /etc/dokcer/daemon.json
# 把自己的harbor仓库IP地址内容加进去,注意要在上一行结束的地方加逗号
"insecure-registries": ["192.168.2.211:80"]
# 重启docker
systemctl restart docker


576f88a16d0543bfa0a6f75886c824b1.png

  1. 登录harbor仓库,推送镜像,到harbor仓库查看
docker login -u 用户名 -p 密码 Harbor地址
# 这里登录我的仓库,并推送镜像
docker login -u admin -p Harbor12345 192.168.2.211:80
docker push 192.168.2.211:80/repo/mytest:v1.0.0

e50bf20921884780b45932168d037234.png

9ed8dcecf8fd440e9d150b201534021a.png

8.3.3 指定目标服务器从Harbor拉取镜像

跟传统方式一样,不过需要在目标服务器上先配置/etc/docker/daemon.json文件,再重启docker

{
        "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
        "insecure-registries": ["192.168.2.211:80"]
}
# 重启docker
systemctl restart docker
#如果镜像仓库是私有的,需要先登录,执行docker login命令。由于这里是公开的仓库,所以不用登录
docker login -u 用户名 -p 密码 harbor仓库地址

65a66af09a08407d8fc120b725c6059f.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
71 2
|
2月前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
2月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
56 4
|
2月前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
2月前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
3月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
2月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
56 0
|
6月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
324 6
|
6月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
450 4
|
6月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
405 1

热门文章

最新文章