Docker搭建私有仓库harbor(docker 镜像仓库搭建)

  • Harbor介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker
Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
官网地址:https://github.com/goharbor/harbor

Docker Harbor是一个企业级的Docker Registry服务,旨在提供安全、可靠的镜像存储和管理解决方案。以下是Docker
Harbor的一些关键特点:

  1. 私有Registry:Docker Harbor允许用户搭建私有的Docker Registry,使得企业可以在自己的内部网络中安全地存储和管理Docker镜像。
  2. 安全性:Docker Harbor提供了访问控制、用户和团队管理功能,以确保镜像的安全性。它支持用户身份验证、权限控制、安全扫描等功能,帮助用户保护他们的容器镜像不受未经授权的访问。
  3. 可扩展性:Docker Harbor支持集群部署,可以轻松地扩展以应对大规模的容器镜像存储需求。
  4. 镜像复制和同步:Docker Harbor允许用户在不同的Registry之间复制和同步镜像,方便用户在多个部署环境之间共享和管理镜像。
  5. 审计和日志记录:Docker Harbor提供审计和日志记录功能,记录用户对镜像的操作,以帮助用户跟踪镜像的变更历史。 总的来说,Docker Harbor是一个功能强大的企业级Docker
    Registry服务,为用户提供了安全、可靠的方式来管理和存储Docker镜像。
  • 所需要的安装包

链接:https://pan.baidu.com/s/1rN25l72i6W36ANAOqxcc_w 提取码:1021

  1. 为harbor签发证书
[root@harbor ~]# hostnamectl set-hostname harbor && /bin/bash
[root@harbor ~]# mkdir /data/ssl -p
[root@harbor ~]# cd /data/ssl/#生成ca证书
#生成一个3072位的key,也就是私钥
[root@harbor ssl]# openssl genrsa -out ca.key 3072
Generating RSA private key, 3072 bit long modulus
...........++
.............++
e is 65537 (0x10001)
#生成一个数字证书ca.pem,3650表示证书的有效时间是3年,按箭头提示填写即可,没有箭头标注的为空:
[root@harbor ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:BJ
Organizational Unit Name (eg, section) []:BJ
Common Name (eg, your name or your server's hostname) []:CHONG
Email Address []:123@163.com#生成域名的证书
#生成一个3072位的key,也就是私钥
[root@harbor ssl]# openssl genrsa -out harbor.key  3072
Generating RSA private key, 3072 bit long modulus
.++
..........................................................++
e is 65537 (0x10001)
#生成一个证书请求,一会签发证书时需要的,标箭头的按提示填写,没有箭头标注的为空:
[root@harbor ssl]# openssl req -new -key harbor.key -out harbor.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:harbor  #主机名
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#签发证书
[root@harbor ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650
#显示如下说明证书发布完成
Signature ok
subject=/C=CH/ST=BJ/L=BJ/O=Default Company Ltd/CN=harbor
Getting CA Private Key

注:安装harbor需要docker,记得安装docker

  1. 安装harbor
#创建harbor安装目录
[root@harbor ~]# mkdir /data/install -p
[root@harbor ~]# cd /data/install/
#上传harbor离线包到该目录:harbor-offline-installer-v2.3.0-rc3.tgz
#下载harbor离线包的地址:https://github.com/goharbor/harbor/releases/tag/
[root@harbor install]# ll
total 614492
-rw-r--r-- 1 root root 629238614 Apr 11 21:40 harbor-offline-installer-v2.3.0-rc3.tgz#解压该安装包
[root@harbor install]# tar -xf harbor-offline-installer-v2.3.0-rc3.tgz
[root@harbor install]# ll
total 614492
drwxr-xr-x 2 root root       122 Apr 11 21:42 harbor
-rw-r--r-- 1 root root 629238614 Apr 11 21:40 harbor-offline-installer-v2.3.0-rc3.tgz
[root@harbor install]# cd harbor
[root@harbor harbor]# ll
total 617800
-rw-r--r-- 1 root root      3361 Jun 17  2021 common.sh
-rw-r--r-- 1 root root 632593607 Jun 17  2021 harbor.v2.3.0.tar.gz
-rw-r--r-- 1 root root      7840 Jun 17  2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root      2500 Jun 17  2021 install.sh
-rw-r--r-- 1 root root     11347 Jun 17  2021 LICENSE
-rwxr-xr-x 1 root root      1881 Jun 17  2021 prepare
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml#修改配置
[root@harbor harbor]# vim harbor.yml

只修改三种地方 一个是主机名 一个是key和pem得位置
在这里插入图片描述

  1. 安装docker-compose

上传docker-compose-Linux-x86_64文件到harbor机器

[root@harbor harbor]# ll
total 629776
-rw-r--r-- 1 root root      3361 Jun 17  2021 common.sh
-rw-r--r-- 1 root root  12254160 Apr 11 22:44 docker-compose-Linux-x86_64.64
-rw-r--r-- 1 root root 632593607 Jun 17  2021 harbor.v2.3.0.tar.gz
-rw-r--r-- 1 root root      7826 Apr 11 22:41 harbor.yml
-rw-r--r-- 1 root root      7840 Jun 17  2021 harbor.yml.tmpl
-rwxr-xr-x 1 root root      2500 Jun 17  2021 install.sh
-rw-r--r-- 1 root root     11347 Jun 17  2021 LICENSE
-rwxr-xr-x 1 root root      1881 Jun 17  2021 prepare
You have new mail in /var/spool/mail/root
[root@harbor harbor]# mv docker-compose-Linux-x86_64.64 /usr/bin/docker-compose
[root@harbor harbor]# chmod +x /usr/bin/docker-compose
[root@harbor harbor]# /bin/bash
[root@harbor harbor]# docker-compose version
docker-compose version 1.26.2, build eefe0d31
docker-py version: 4.2.2
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
[root@harbor harbor]#
  1. 上传harbor所需要得镜像

docker-harbor-2-3-0.tar.gz

#解压镜像
[root@harbor harbor]# docker load -i docker-harbor-2-3-0.tar.gz
[root@harbor harbor]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
goharbor/harbor-exporter        v2.3.0    fa4ecf260b3a   2 years ago   80.7MB
goharbor/chartmuseum-photon     v2.3.0    199be7eb1b5b   2 years ago   178MB
goharbor/redis-photon           v2.3.0    3cc2c3e315a2   2 years ago   191MB
goharbor/trivy-adapter-photon   v2.3.0    3c3dc5fc0529   2 years ago   164MB
goharbor/notary-server-photon   v2.3.0    a8e3a26ef25a   2 years ago   105MB
goharbor/notary-signer-photon   v2.3.0    e8776cc92436   2 years ago   102MB
goharbor/harbor-registryctl     v2.3.0    4cf0d9bc3086   2 years ago   132MB
goharbor/registry-photon        v2.3.0    222f05a9ab07   2 years ago   81MB
goharbor/nginx-photon           v2.3.0    78f6ae7adc04   2 years ago   44MB
goharbor/harbor-log             v2.3.0    9446a5b39706   2 years ago   194MB
goharbor/harbor-jobservice      v2.3.0    bac328ac1a47   2 years ago   170MB
goharbor/harbor-core            v2.3.0    7bbebce7798c   2 years ago   157MB
goharbor/harbor-portal          v2.3.0    c4f22964cbf3   2 years ago   57.3MB
goharbor/harbor-db              v2.3.0    fc74663d9e30   2 years ago   262MB
goharbor/prepare                v2.3.0    a830321ca695   2 years ago   291MB#安装harbor
[root@harbor harbor]# cd /data/install/harbor
[root@harbor harbor]# ./install.sh

看到以下内容 成名成功
在这里插入图片描述
5. 安装成功

默认用户名:admin
默认密码:Harbor12345

在这里插入图片描述
在这里插入图片描述
6. 新建项目

在这里插入图片描述
在这里插入图片描述

  1. 其他docker机器配置该镜像仓库
#两台服务器配置本地hosts
vim /etc/hosts
192.168.40.180 test-server01
192.168.40.181 harbor#修改180机器得daemon.json配置
[root@test-server01 ~]# vim /etc/docker/daemon.json{"registry-mirrors":["https://vl2nkrv0.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],"insecure-registries": ["192.168.40.181","harbor"]
}
#harbor机器得IP和主机名#重启docker
[root@test-server01 ~]# systemctl restart docker
  1. docker登录harbor进行测试
[root@test-server01 ~]# docker login 192.168.40.181
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded#打包一个镜像上传到test项目
[root@test-server01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
tomcat        v1        422fe599256a   4 weeks ago   803MB
nginx         v1        f436f09d9c6c   4 weeks ago   342MB
inter-image   latest    5eb7b6cd9fb7   4 weeks ago   342MB
volume        latest    4fd3ed843dab   2 years ago   231MB
centos        latest    5d0da3dc9764   2 years ago   231MB
[root@test-server01 ~]#
#以本机有的镜像tomcat为例进行打标签[root@test-server01 ~]# docker tag tomcat:v1  192.168.40.181/test/tomcat:v1
[root@test-server01 ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED       SIZE
192.168.40.181/test/tomcat   v1        422fe599256a   4 weeks ago   803MB
tomcat                       v1        422fe599256a   4 weeks ago   803MB
nginx                        v1        f436f09d9c6c   4 weeks ago   342MB
inter-image                  latest    5eb7b6cd9fb7   4 weeks ago   342MB
centos                       latest    5d0da3dc9764   2 years ago   231MB
volume                       latest    4fd3ed843dab   2 years ago   231MB
#上传打上标签得镜像
[root@test-server01 ~]#  docker push 192.168.40.181/test/tomcat:v1
The push refers to repository [192.168.40.181/test/tomcat]
baa34f4b2d36: Pushed
9098e168cf25: Pushed
8e1cd85f5863: Pushed
70e115906be4: Pushed
6900d18cbe12: Pushed
49461804abc1: Pushed
2e412669ee56: Pushed
74ddd0ec08fa: Pushed
v1: digest: sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200 size: 1999
#成功上传到镜像仓库
  1. harbor web页面查看

已经有这个tomcat包在这里插入图片描述

  1. 测试从harbor下载镜像
#删除本地镜像[root@test-server01 ~]# docker images |grep test/tomcat
192.168.40.181/test/tomcat   v1        422fe599256a   4 weeks ago   803MB
[root@test-server01 ~]# docker rmi 192.168.40.181/test/tomcat:v1
Untagged: 192.168.40.181/test/tomcat:v1
Untagged: 192.168.40.181/test/tomcat@sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200
[root@test-server01 ~]# docker images |grep test/tomcat#下载镜像
[root@test-server01 ~]# docker pull 192.168.40.181/test/tomcat:v1
v1: Pulling from test/tomcat
Digest: sha256:99c83711e386c7de760bc2c549b231995928bcb37b0d27b7d6478b6c332a5200
Status: Downloaded newer image for 192.168.40.181/test/tomcat:v1
192.168.40.181/test/tomcat:v1
You have new mail in /var/spool/mail/root
[root@test-server01 ~]# docker images |grep test/tomcat
192.168.40.181/test/tomcat   v1        422fe599256a   4 weeks ago   803MB

页面可以看到下载次数已经是1了在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android statsd 埋点简析

源码基于:Android U 0. 前言 最近在研究 Android 自带的系统数据指标采集功能,框架依旧很严谨、完美,这里做个分享。 1. Android S 之后变化 stats 的代码从 framework 或 system/core 中转移到了 packages/modules/StatsD 目录中。 2. 框架…

IEC104转MQTT网关轻松将IEC104设备数据传输到Zabbix、阿里云、华为云、亚马逊AWS、ThingsBoard、Ignition云平台

随着工业4.0的深入发展和物联网技术的广泛应用,IEC 104(IEC 60870-5-104)作为电力系统中的重要通信协议,正逐步与各种现代监控、管理和云平台实现深度融合。IEC104转MQTT网关BE113作为这一融合过程中的关键设备,其能够…

动手学深度学习V2每日笔记(模型选择+过拟合和欠拟合)

本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1K64y1Q7wu/?spm_id_from333.788.recommend_more_video.0&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不太理解的内容进行笔记记录&a…

通过IEC104转MQTT网关轻松接入阿里云平台

随着智能电网和物联网技术的飞速发展,电力系统中的传统IEC 104协议设备正面临向现代化、智能化转型的迫切需求。阿里云作为全球领先的云计算服务提供商,其强大的物联网平台为IEC 104设备的接入与数据处理提供了强大的支持。本文将深入探讨钡铼网关在MQTT…

linux查看某个是否被占用以及释放端口

在 Linux 系统中&#xff0c;可以使用多种方法来检查某个端口是否被占用&#xff0c;并释放该端口。以下是详细的步骤&#xff1a; 1. 检查端口是否被占用 使用 netstat sudo netstat -tuln | grep <port_number>例如&#xff0c;要检查端口 8080 是否被占用&#xff…

UML通信图建模技术及应用例

新书速览|《UML 2.5基础、建模与设计实践》 在对系统的动态行为进行建模时&#xff0c;通信图常被用于按组织结构对控制流进行建模。与顺序图一样&#xff0c;一个单独的通信图只能显示一个控制流。 使用通信图建模时可以遵循如下策略&#xff1a; &#xff08;1&#xff09…

WinDbg用户模式调试基础

WinDbg用户模式调试基础 在前面的文章中&#xff0c;介绍了如何使用WinDbg分析蓝屏原因https://www.cnblogs.com/zhaotianff/p/15150244.html 不过那会都是在网上找的资料&#xff0c;东拼西凑出来&#xff0c;并没有系统的去学习WinDbg。 最近在学习内核开发这一块的内容&…

Arrays.asList()创建的集合不能使用remove函数

Arrays.asList() 创建的集合确实不能直接使用 remove 方法&#xff0c;这是因为该方法返回的集合是一个固定大小的列表&#xff0c;背后由一个数组支持。由于数组的长度是固定的&#xff0c;所以这个列表也不能增加或减少元素。 以下是详细解释和解决方案&#xff1a; 原因 …

顺序表的实现和操作

目录 一.前言 二. 顺序表的优缺点 三. 顺序表的定义和初始化 四.顺序表的相关操作 一.前言 首先介绍下线性表的定义&#xff0c;线性表是具有相同特性的数据元素的一个有限序列。而我们的顺序表就是线性表的一种&#xff0c;是线性表的顺序存储结构。所谓顺序存储就是把逻辑…

Photos框架 - 自定义媒体选择器(UI列表)

引言Photos框架 - 自定义媒体资源选择器&#xff08;数据部分&#xff09;-CSDN博客 关于自定义媒体选择器上一篇博客我们已经介绍了使用Photos获取媒体资源数据和处理媒体资源数据&#xff0c;有了数据&#xff0c;UI的实现就比较灵活了&#xff0c;我就以上面的设计样式为例…

LabVIEW操作系列1

系列文章目录 我的记录&#xff1a; LabVIEW操作系列 文章目录 系列文章目录前言五、特殊用法5.1 取值范围表示5.2 对输入值取值范围进行限定5.3 控制多个While循环停止运行。5.4 获取按钮上的文本5.5 获取按钮上的文本【进阶】 六、使用步骤1.引入库2.读入数据 七、其余功能7.…

数学建模基础:数据的分析与模型构建

引言 在当今数据驱动的世界中&#xff0c;数学建模已成为解决复杂问题的关键工具。本篇文章将探讨数学建模的基础知识&#xff0c;特别是数据处理与拟合模型的重要性和方法。 第一部分&#xff1a;数据的重要性 数据是数学建模的基石。在开始任何建模工作之前&#xff0c;我…

Spring源码(六)--Bean生命周期相关的接口

Bean生命周期相关的接口 Bean生命周期接口相关的这些类和接口&#xff0c;都可以多看看。 Bean工厂实现应该尽可能支持标准的Bean生命周期接口。 整套初始化方法及其标准顺序为: * * <li>BeanNameAwares {code setBeanName}* <li>BeanClassLoaderAwares {code se…

2.5 openCv -- 使用 OpenCV 合并(混合)两张图片

目标 在本教程中,您将学习: 什么是线性混合及其用途;如何使用 addWeighted() 函数合并两张图片。理论 注释 下面的解释来自 Richard Szeliski 的书籍《计算机视觉:算法与应用》。 从我们之前的教程中,我们已经了解了一些像素运算符。一个有趣的二元(双输入)运算符是线…

【Python selenium过极验五子棋】自动化过五子棋人机验证,享受丝滑的落子,秒了

文章日期&#xff1a;2024.07.25 使用工具&#xff1a;Python 文章类型&#xff1a;自动化过极验五子棋 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法…

Spring Boot(八十二):SpringBoot通过rsa实现API加密

项目中使用RSA加密方式对API接口返回的数据加密,让API数据更加安全。别人无法对提供的数据进行破解。Spring Boot接口加密,可以对返回值、参数值通过注解的方式自动加解密 。 下面开始代码演示 1 接口加密 1.1 新建一个springboot项目 1.2 添加依赖 <dependency>&l…

如何做校园圈子小程序,需要哪些功能?可打包APP小程序H5,源码交付,支持二开!

独立学校首页 支持每个学校独立首页!每个学校都可以拥有专属首页&#xff0c;打造不同风格的学校首页展示效果 多业务覆盖 可实现校园内外卖、跑腿、超市、药店水果、快餐店等业务全覆盖!所有配送业务平台都可开展 多站点运营 支持多学校多站点运营&#xff0c;各分站管理员可独…

【Docker】CentOS7环境下的安装

环境展示 安装 配置仓库 sudo yum install -y yum-utils # docker官方key文件下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 建议使用阿里云key文件下载 sudo yum-config-manager --add-repo https://mirrors.aliyun.…

Python小工具——监听某网站的数据变化并进行邮件通知

目录 一、需求描述 二、解析 三、实例代码 一、需求描述 监听自考网2024年广东省6月份的毕业生学历注册进度&#xff0c;这是网址&#xff1a;https://www.chsi.com.cn/xlcx/count_zk.jsp&#xff0c; 如上图所示&#xff0c;我们想知道这个红色的空格啥时候被填满&#xf…

【yolov8】|小目标优化|:增加CA机制 运行成功

🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 你好,我是@努力的小巴掌 之前用baseline跑了yolov8。 为了提升性能,我们需要对yolov8进行优化。 本次的优化,我们从增加注意力机制开始…