简单的docker学习 第11章 镜像中心

第11章 镜像中心

Docker Hub 与阿里云都是 Docker 的公网镜像中心,用户可以将自己的镜像 push 到公网镜像中心中自己的镜像仓库,并可将仓库设置为私有库,使他人无法看到,更无法 pull,以保证镜像的安全性。不过,在实际生产中为了保障镜像的安全性,为了避免由于网络带宽或网速等问题而影响到镜像的拉取或推送,公司一般不会使用公网镜像中心,而是在公司内部搭建一个私有镜像中心。

注册发布暂不赘述,官网查看

11.7 harbor镜像中心

11.7.1 Harbor 简介

Harbor 是由 VMware 公司中国团队使用 Go 语言开发的一款 Registry server 开源项目,其是在 Docker Registry 的基础之上进行了二次封装。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能与安全,同时也提供了一个非常方便、漂亮的 Web 管理界面。

Harbor 的官网为 https://goharbor.io/ 。Harbor 在 github 上的官网 。

11.7.2 Harbor 安装系统要求

Harbor 要安装的主机需要满足硬件与软件上的要求。

  • 硬件要求

    硬件资源最小要求推荐要求
    CPU2CPU4CPU
    内存4GB8GB
    硬盘40G160G
  • 软件要求

    软件资源版本要求作用
    Docker CE引擎17.06.0 或更高版本Harbor 是以容器形式在运行,需要Docker 引擎
    Docker Compose1.18.0 或更高版本Harbor 是 10 个容器在运行,通过 Docker ompose 编排
    OpenSSL最新版生成数字证书,以支持 HTTPS
11.7.3 安装 Harbor
  • 下载安装包

    在官网复制 Latest 最新版的离线安装包的下载链接地址,在 Linux 系统中通过 wget 命令下载,将其下载到某目录中。

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

    image-20240716111922229

  • 解压安装包

    将下载好的包解压到某目录中。解压后其就是一个独立的目录 harbor

    tar -zxvf harbor-offline-installer-v2.6.2.tgz -C /opt/apps
    

    image-20240716112651676

  • 修改 harbor.yml

    复制一份 harbor 解压包中的 harbor.yml.tmpl,并重命名为 harbor.yml。修改 harbor.yml 配置文件。共修改三处:

    • 将 hostname 指定为当前主机的 IP

    • 注释掉所有 https 相关配置

    • 记住(或修改)admin 用户的登录密码

      另外需要注意一点,harbor 默认的端口号为 80,修改为其他不易占用端口8005

    cp harbor.yml.tmpl harbor.yml
    

    image-20240716150626359

  • 运行 install.sh

    运行 harbor 解压目录中的 install.sh 命令,其会自动完成五步的安装过程,并在最终启动很多的容器。这些容器本质上就是通过 docker-compose 进行编排管理的
    在这里插入图片描述

11.7.4 windows 浏览器访问

在浏览器地址栏中输入 http://192.168.138.129:8005 即可看到如下页面,在其中输入用户名admin,密码为 harbor.yml 中设置的密码,即可登录。

image-20240716150716048

image-20240716143954526

11.7.5 Harbor 的启停

由于 Harbor 是由 10 个容器同时运行完成的,且是通过 docker-compose 完成的容器编排。Harbor 安装完成后会在 harbor 解压目录中生成 docker-compose.yml 文件,所以 Harbor的启停命令,都是由 docker-compose 完成的,且需要在 harbor 的解压目录中完成

  • Harbor 停止

    docker-compose stop
    
  • Harbor 启动

    docker-compose up -d
    
11.7.6 Docker 客户端操作

registry 私有镜像中心搭建成功了,Docker 客户端就可以对其进行操作了。

  • 修改 daemon.json 文件

    默认情况下,为了保证安全,Docker 客户端都采用的是 https 提交各种请求,例如,登录请求、pull 请求、push 请求等。但私有镜像中心不接受 https 请求。所以需要告诉 Docker客户端该镜像中心地址是安全的,这样 Docker 客户端将会自动采用 http 请求方式。而对Docker 客户端的告知方式是,手工修改 Docker 客户端的/etc/docker/daemon.json 文件。在文件中添加如下内容:

    vim /etc/docker/daemon.json
    {"registry-mirrors": ["https://z583cmea.mirror.aliyuncs.com"],"insecure-registries": ["192.168.138.129:8005"]
    }# 重启docker服务
    systemctl restart docker
    

    image-20240716151315466

  • 登录私有镜像中心

    docker login 192.168.138.129
    Username: admin
    Password: 101022
    

    image-20240716152930262

  • 新增test项目

    image-20240716155230063

    image-20240716155255512

  • 复制并重命名镜像

    通过 docker tag 命令可以对原有镜像进行复制并重命名。

    这个重命名的镜像的<repository>中需要采用<domain-name>/<project-name><software-name>格式。

    当然,如果需要区分用户的话,也可以采用<domain-name>/<project-name>/<username>/<software-name>格式。

    • domain-name => 192.168.138.129:8005
    • project-name => test
    • username => admin
    • busy-box:1.0
    # 复制三个镜像
    docker tag busybox 192.168.138.129:8005/test/admin/busy-box:1.0
    docker tag busybox 192.168.138.129:8005/test/admin/busy-box:1.2
    docker tag busybox 192.168.138.129:8005/test/admin/busy-box:1.3
    

    image-20240716154732778

  • 推送镜像

    docker push 192.168.138.129:8005/test/admin/busy-box:1.0
    docker push 192.168.138.129:8005/test/admin/busy-box:1.2
    docker push 192.168.138.129:8005/test/admin/busy-box:1.3
    

    image-20240716154927487

  • 查看镜像中心

    image-20240716154954464

    image-20240716155013122

    image-20240716155030431

  • 拉取镜像文件

    点击拉取命令复制图标即可

    image-20240716161428837

    docker pull 192.168.138.129:8005/test/admin/busy-box:1.3
    

    image-20240716161552865

  • 登出私有镜像中心

    docker logout 192.168.139.129:8005
    

    image-20240716155538915

11.9 Harbor 架构与工作原理

11.9.1 Harbor 架构模块

Harbor 整体架构中的组件非常多,下面简单介绍几个非常重要的模块。

  • Proxy

    反向代理服务器,由 Nginx 充当。负责接收并转发来自客户端的请求,无论请求是直接来自于浏览器的 HTTP 请求,还是来自于 Docker 客户端的命令。根据不同的请求,Proxy 会将其转发至 Core 或 Registry 模块

  • Core

    Harbor 的核心模块,有两个非常重要的子服务模块:

    • Notification Manager:通过 webhook 实现的消息管理模块。当 registry 中镜像发生改变时,会立即通知到 web 页面,即会在 web 页面中显示更新。

    • API Server:Proxy 根据不同的路由规则将请求首先转发到 API Server 的不同接口。但无论哪个处理接口,都强制要求对请求进行权限控制,即都需要请求先根据不同身份从

    • API Server 中的 AUTH 模块中获取到一个有效的 token。AUTH 模块是通过 token service实现的用户认证。

  • GC Collector

    负责整个系统中的 GC 管理。

  • Chart Museum

    Helm 的仓库。

  • Notary

    数据权限控制器。

  • Log Collector

    负责 Harbor 中其他模块的日志汇总。

  • Job Service

    负责镜像复制。在高可用 Harbor 集群中,通过 Job Service 可以将本地镜像同步到远程Harbor 实例上。

  • Distribution

    镜像中心,由 registry 镜像充当,负责存储 Docker 镜像,及处理 docker push/pull 请求。

  • k-v storage

    主要是为 Job Service 提供缓存服务的,将 Job 元数据临时性存放在其中。默认由 Redis充当。所以,Redis 在高可用 Harbor 集群中的作用很大

  • Local/Remote Storage

    可以将工程元数据、用户数据、角色数据、同步策略以及镜像元数据等存放在本地或远程服务器中的内存块、文件或持久化对象中。不过,一般会使用 SQL Database。

  • SQL Database

    用于存放工程元数据、用户数据、角色数据、同步策略以及镜像元数据等。默认采用PostgreSQL 数据库。

11.9.2 Harbor 架构图及工作原理

有关 Harbor 的系统架构描述,Harbor 在 GitHub 的官网中如下地址有直接的描述及架构图,架构图分解的非常细致。

image-20240716160153218

11.9.3 Docker 命令执行流程
  • 关于公钥与私钥

    Harbor 搭建完毕后,token service 中就会保存该 harbor 的私钥,registry 中保存该 harbor的公钥。使用私钥加密称为数字签名,使用公钥解密称为签名验证。使用公钥加密称为加密,使用私钥解密稀烂解密。

  • docker login 命令

    image-20240716160257191

  • docker push 命令

    image-20240716160316277

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

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

相关文章

【LeetCode刷题笔记】LCR.27 回文链表

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

为什么康耐视visionpro的C#二次开发调用的recorddisplay控件偶尔会显示白色的,偶尔又正常了?

recorddisplay控件正常显示 异常显示 原因分析&#xff1a; 没有完全加载recorddisplay控件&#xff0c;有可能是有bug没有完全加载&#xff0c;打断点调试控件是否完全加载。

EMQX服务器安装MQTT测试

cd /usr/local/develop wget https://www.emqx.com/en/downloads/broker/5.7.1/emqx-5.7.1-el7-amd64.tar.gz mkdir -p emqx && tar -zxvf emqx-5.7.1-el7-amd64.tar.gz -C emqx ./emqx/bin/emqx start 重启 ./emqx/bin/emqx restart http://10.8.0.1:18083/ 账号ad…

【Kubernetes】应用的部署(一):金丝雀部署

应用的部署&#xff08;一&#xff09;&#xff1a;金丝雀部署 在项目迭代开发过程中&#xff0c;经常需要对应用进行上线部署。上线部署策略主要有 3 种&#xff1a;金丝雀部署、蓝绿部署 和 滚动部署。 金丝雀部署 也被叫作 灰度部署。金丝雀部署过程&#xff1a;先让一部分…

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 242.有效的字母异位词349.两个数组的交集202.快乐数1.两数之和 242.有效的字母异位词 分别定义两个字母哈希表就可以了 class Solution { public:bool isAnagram(string s, strin…

搭建pxe网络安装环境

实验目的&#xff1a; 搭建pxe网络安装环境实现服务器自动部署 实验原理&#xff1a; PXE 网络安装环境实现服务器自动部署的实验原理为&#xff1a; 待安装的服务器&#xff08;PXE 客户端&#xff09;开机时&#xff0c;BIOS 设置从网络启动&#xff0c;向网络发送请求。…

科普文:JUC系列之ForkJoinPool源码解读ForkJoinWorkerThread

科普文&#xff1a;JUC系列之ForkJoinPool基本使用及原理解读-CSDN博客 科普文&#xff1a;JUC系列之ForkJoinPool源码解读概叙-CSDN博客 科普文&#xff1a;JUC系列之ForkJoinPool源码解读WorkQueue-CSDN博客 科普文&#xff1a;JUC系列之ForkJoinPool源码解读ForkJoinTask…

【第13章】Spring Cloud之Gateway全局异常处理

文章目录 前言一、异常处理1. 响应实体类2. 异常处理类 二、单元测试1. 无可用路由2. 服务不可用 总结 前言 网关作为我们对外服务的入口起着至关重要的作用&#xff0c;我们必须保证网关服务的稳定性&#xff0c;下面来为网关服务增加异常处理机制。 一、异常处理 1. 响应实…

K个一组翻转链表(LeetCode)

题目 给你链表的头节点 &#xff0c;每 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&…

UE GAS学习

【Unreal】虚幻GAS系统快速入门-CSDN博客 GameplayTags FGameplayTags是一种层级标签&#xff0c;如Parent.Child.GrandChild。 通过GameplayTagManager进行注册。替代了原来的Bool&#xff0c;或Enum的结构&#xff0c;可以在玩法设计中更高效地标记对象的行为或状态。 Gamep…

牛客周赛 Round 54 (A~E)

#牛客周赛 Round 54 &#xff08;A~E&#xff09; 前言&#xff1a; 以后会定时更新很多比赛的题解 希望借此让自己坚持赛后补题 要不然写完就结束 自己水平没有一点提高 本人很菜所以不会更新 太难的题 加油&#xff01;&#xff01;&#xff01;1. ​清楚姐姐的糖葫芦…

C语言之递归函数

文章目录 &#x1f34a;自我介绍&#x1f34a;递归函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家好&#xff0c;我是小珑也要变强&#xff08;也是小珑&…

C#学习笔记12:SYN6288语音模块_Winform上位机控制软件

今日尝试使用C# Winform写一个上位机软件控制 SYN6288语音模块 这里不讲什么基本原理(或者讲的比较略简)&#xff0c;直接讲实现了就...... 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 控件的摆放&#xff1a; SYN6288介绍: 代码编程&#xff1a; 对16进制发送…

VUE.js

目录 一、什么是VUE.js 二、VUE.js优点 三、VUE安装 四、第一个VUE程序 五、Vue指令 v-text v-html v-on v-model v-show v-if v-bind v-for 六、VUE实例生命周期 七、Vue-CLI搭建项目 主要的功能 需要的环境 八、组件路由 搭建步骤: 1. 创建 router 目录 …

ctfhub 命令注入

知识点 1.常见的拼接符 1、A ; B 先执行A&#xff0c;再执行B 2、A & B 简单的拼接 3、A | B 显示B的执行结果 4、A&&B A执行成功之后才会执行B 5、A || B A执行失败之后才会执行B , 在特殊情况下可代替空格 2.常见的命令 &#…

CentOS7 VMware虚拟机基于NAT配置网络IP

目录 前言 VMnet8 虚拟网络编辑 ens33 ping 防火墙 前言 平时学习时一直需要用到Linux服务器&#xff0c;一般都是在Windows上安装VMware来创建一个虚拟机。创建的虚拟机需要配置网络才能够访问外网&#xff0c;可以通过以下两种方式来配置虚拟机网络 桥接模式NAT模式&…

「测试线排查的一些经验-上篇」 后端工程师

文章目录 端口占用脚本失灵线上部署项目结构模版配置文件生效 一般产品研发过程所使用的环境可分为&#xff1a; 研发环境-dev测试环境-test生产环境-prod 软件开发中&#xff0c;完整测试环境包括&#xff1a;UT、IT、ST、UAT UT Unit Test 单元测试 IT System Integration …

MoE-LLaVA: Mixture of Experts for Large Vision-Language Models

发表时间&#xff1a;6 Jul 2024 论文链接&#xff1a;https://arxiv.org/pdf/2401.15947 作者单位&#xff1a;Peking University Motivation&#xff1a;最近的进展表明&#xff0c;扩展大型视觉语言模型 (LVLM) 有效地提高了下游任务的性能。然而&#xff0c;现有的缩放方…

深度学习笔记(神经网络+VGG+ResNet)

深度学习 主要参考博客常用英语单词 概念应用神经网络基础神经网络基本结构 超参数超参数是什么常用超参数超参数搜索过程常用超参数调优办法&#xff08;通过问题复杂度和计算资源选择&#xff09; 激活函数介绍为什么要使用激活函数推荐博客 sigmoid激活函数&#xff08;使用…

第R1周:RNN-心脏病预测

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊 要求&#xff1a; 1.本地读取并加载数据。 2.了解循环神经网络&#xff08;RNN&#xff09;的构建过程 3.测试集accuracy到达87% 拔高&#xff1a; 1.测试集accuracy到达89% 我的环境&a…