K8s: 公有镜像中心和私有镜像中心的搭建

Kubernetes使用Harbor私有镜像仓库 Kubernetes使用Harbor私有镜像仓库1 安装说明1.1 安装要求说明1.2 安装版本说明1.3 集群效果说明2 安装步骤2.1 安装Docker2.2 安装Docker-Compose2.3 安装Harbor2.4 配置Docker客户端3 测试3.1 创建Harbor项目3.2 推送Docker镜像3.3 拉取Docker镜像 1 安装说明 1.1 安装要求说明 集群要求说明:在安装 Harbor 私有镜像仓库之前,需要先有一个K8S集群,本文中使用的集群的搭建过程请见 基于CentOS 7 阅读详情

公有镜像中心的搭建和使用


1 )在 官方docker镜像中心推送

  • 在 hub.docker.com 上注册账号 (国内一般访问不了,原因不多说)

  • 找到 Create Repository 按钮就行仓库的创建

  • 这样就在官方创建了一个仓库,比如地址为: xx/y-y

    • xx 是我的账户名
    • y-y 是刚创建的仓库名
  • 现在,我将本地的docker镜像,推送到这个仓库里

    • 没有登录过,先使用 docker login 进行登录
    • 假设本地的 nginx:latest 镜像,现在我要对其进行打一个新的tag
    • $ docker tag nginx xx/y-y:latest
    • 之后,将其推送到远程
    • $ docker push xx/y-y:latest
  • 如果 hub.docker.com 在国内无法访问,可以在阿里云上创建 docker hub

  • 为官方docker镜像中心加速

  • 配置国内 Docker 镜像源 $ vi /etc/docker/daemon.json

    {
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "live-restore": true
    }
    
  • 配置之后,需要重启 $ systemctl restart docker

2 )在阿里云docker镜像中心搭建

  • 在阿里云控制台,选择 容器镜像服务
  • 为何选择阿里云,因为当你下载的时候,会走cdn来加速
  • 进入实例列表,有两种,个人版和企业版本
  • 可以选择个人版实验一下,创建后,在 仓库管理/镜像仓库即可进行管理

搭建私有镜像中心

  • 我们现在用的私有docker镜像中心是JCR,也就是 JFrog Container Registry
  • 这个和开源的harbor有点类似,但是这个比harbor更加的好用,更加的强大
  • 因为它不仅能管这个通用仓库,还有helm仓库,harbor是没有通用类型仓库的

整体架构图如下

  • docker client 连接的是 JCR, JCR 一般连的是 docker.io/library 这个远程
  • JCR 是部署在本地私有环节中的, JCR 对外除了连接官方的,还可以连接阿里云容器服务
  • JCR 在这里做了一个远程代理的作用,JCR里面可以有多种不同的仓库

安装 JCR (JFrog Container Registry)

1 )准备工作

  • 在 master 节点上执行以下命令

    • 设置环境变量
      • $ vi ~/.bash_profile 增加 JFROG_HOME 环境变量
        export JFROG_HOME=~/jfrog
        
      • $ source ~/.bash_profile 生效
    • 设置目录和文件
      • $ sudo mkdir -p $JFROG_HOME/artifactory/var/etc
      • $ cd $JFROG_HOME/artifactory/var/etc
      • $ sudo touch ./system.yaml
      • $ sudo chown -R 1030:1030 $JFROG_HOME/artifactory/var
      • $ sudo chmod -R 777 $JFROG_HOME/artifactory/var
      • 如果觉得这些麻烦,可以用以下的方法
        • $ sudo docker volume create data_artifactory
        • $ sudo docker volume inspect data_artifactory
        • $ sudo docker run --name jfrog-artifactory-jcr -d --rm -v data_artifactory:/var/opt/jfrog/artifactory ...
          • 这里省略,下面会有命令补充
    • 运行docker
      • docker 镜像可以先行下载,比较大
      • $ docker pull releases-docker.jfrog.io/jfrog/artifactory-jcr:7.4.3
        • 注意,这个镜像在 Mac 上正常运行,在 centos 9 上会有问题报错,原因是必须 root 权限
        • 按照官方下载 jcr 版本的 Linux版自行安装, 不再赘述,有问题,找官方和社区
      • $ docker run --name artifactory-jcr -v $JFROG_HOME/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-jcr:7.4.3
      • $ sudo docker ps | grep jcr 查看运行状态
  • 修改这台JCR服务器上的相关配置

  • 在各台机器上,加入Mac的ip地址,修改hosts文件(Mac自身也要同时做此修改)

    10.211.10.2     art.local
    
    • 这是 JCR 服务器的ip地址
  • 接着,开始配置Docker insecure registry,(在 JCR服务器和其他服务节点都要一起配置)

  • $ vi /etc/docker/daemon.json 这个在服务器上执行,如果是Mac上,打开自己的Docker Desktop 进行修改

    {
        "insecure-registries": ["art.local:8081"]
    }
    
    • 加入如上 insecure-registries 的配置项,如果JCR部署到了公网上有证书https的则不用配置这个
    • 在 Mac Docker Desktop 上点击 Apply & restart 按钮
    • 在服务器上执行 $ systemctl restart docker
    • 以上操作,比较敏感,请谨慎操作,会导致所有docker服务暂时不可用
  • 最后,可能还需要重新启动 JCR 容器服务

  • 再次查看 docker 容器的运行状态 $ docker logs jfrog-artifactory-jcr

    ###############################################################
    ###   All services started successfully in 38.044 seconds   ###
    ###############################################################
    
    • 发现有如下输出,则JCR服务全部启动起来了

2 ) 配置

2.1 访问 localhost:8081

2.2 之后,自动跳转,这个是 loading 界面

2.2 之后,继续跳转到登录界面

  • 输入账号和密码: admin/password 之后进入下图
  • 点击 Get Started 进入下个界面,先阅读服务条款,滚动窗口
  • 之后选中 I have read and agree to the terms and conditions stated in the EULA. 复选框
  • 点击 Next 进入下一个界面,这个邮箱输入可以不用填,不是必选项
  • 点击 Next 进入重置密码界面,输入自己的新密码
  • 点击 Next 进入设置baseUrl的地址界面,非必填项,可不修改
  • 点击 Next 进入设置Default Proxy界面,非必填项,可不修改
  • 点击 Next 进入创建仓库界面,选中下面三个
  • 点击 Next 进入 Summary 界面
  • 这里有:docker 本地仓库,docker远程仓库,docker虚拟仓库,点击 Finish 按钮,进入
  • 进入上个界面之后,需要执行 $ docker login art.local:8081 输入账号和密码

  • 如果出现,如下信息,则成功创建好了私有镜像仓库

    Username: admin
    Password:
    Login Succeeded
    
  • 好,现在登录 JCR 并创建 5 个仓库

  • 分别创建: docker-local, docker-test, docker-release, docker-remote 和 docker virtual 仓库

    • docker-local 是开发用的
    • docker-test 是测试团队用的
    • docker-release 是发布生产运维用的
    • docker-remote 是代理远程的,比如 docker hub 或 ali registry
    • docker virtual 是统一的docker虚拟仓库,能访问底层的上述四种仓库
  • 上述界面,左侧菜单是是个tab栏,点击设置图标切换到 admin 版

  • 展开 Repositories 菜单,对应路由是: /ui/admin/repositories/local

  • 点击 New Local Repository 创建另外的2个仓库: docker-test, docker-release
  • 目前,我们进入到 Virtual 卡片栏点击 docker,将我们刚创建的2个仓库加入
  • 加入
  • 加入后
  • 基于以上,仓库就创建好了
  • 备注,如果有多个 remote 仓库,registry 栏自行添加, 不再赘述

将镜像推送到私有镜像中心

  • 我们可以把本地的镜像推送到上面的私有镜像中心去,我们自己的项目也可先打包成镜像
  • 需要两步,用我们本地的 alpine:latest 来演示
    • 本地进行tag打包
      • $ docker tag alpine:latest art.local:8081/docker-local/alpine:1.0
    • 之后进行push, 注意要在 login 之后进行 push
      • $ docker push art.local:8081/docker-local/alpine:1.0
        The push refers to repository [art.local:8081/docker-local/alpine]
        8d3ac3489996: Pushed
        1.0: digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3 size: 528
        
  • 现在已经推送上去了,进入页面查看
  • 切换到 Docker Info 界面,可见更多信息
  • 同时,可以再 Properties 栏添加自定义属性,标签
  • 如果后期都没有问题了,可以再这个界面,拷贝到测试环境中去
  • 这样,逐级迁移(测试->生产)即可,这是拆分仓库的好处
k8s实战-如何使用私有镜像仓库 本文介绍如何通过创建Secret来拉取私有镜像仓库的镜像,从而完成Deployment的创建。 阅读详情

相关推荐

k8s基础知识:镜像下载策略、容器重启策略、资源限制、端口映射

若比较结果相同,则直接使用本地缓存镜像,若比较结果不同,则会拉取远程仓库最新 的镜像。当容器异常退出时(kill -9时容器的退出码非0,貌似是137),重启容器(即创建新容器)。用于限制Pod,Namespace的资源,比如Pod内的某个容器资源使用cpu,内存等。IfNotPresent: 如果本地有镜像,则尝试启动容器,并不会去拉取镜像。容器退出时,始终重启容器(即创建新容器),默认策略。容器退出时,不重启容器(即不创建新容器)。

2301_76839564的博客 1597

K8S集群配置使用私有镜像仓库Harbor

K8S集群配置使用私有镜像仓库Harbor

weixin_43909790的博客 4340

k8s 搭建Harbor私有仓库验证拉取镜像

搭建Harbor环境准备安装harbor验证访问新建项目上传镜像下载镜像master上拉取镜像 环境准备 搭建Harbor之前已经搭建了k8s集群环境,Harbor服务器上已经安装了docker、docker-compose,并已启动docker k8s集群master01:192.168.245.211 k8s集群master02:192.168.245.206 k8s集群node01:192.168.245.209 k8s集群node02:192.168.245.210 harbor服务器:192.

shengjie87的博客 2473

docker镜像仓库hub.docker.com无法访问

文章主要内容: - 介绍dockerhub为什么无法访问 - 解决办法

阿贤的博客 4万+

K8S 完美搭建的家庭云运算中心

需求 一台笔记本(4C8G),一台台式机(12C 32G),后面公司马上又要退役下来两台笔记本。还有自己买的游戏本,这些闲置机器也是吃灰,想着把它利用起来。如何把它联接起来也是一个事情?现在这种硬件资源管理器也是Yarn、Mesos、K8S之流。 Mesos没有接触过,也没怎么听说过,pass Yarn的话一个是界面太丑,上CDH成本太高,一个CM就大的要是,二是不支持微服务、中间件。 K8S ...

wuhulala的休息室 2479

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

K8S系列学习之私有镜像库搭建和使用

Kubernetes学习路上的那些事儿,很有必要分享出来 为什么要搭建私有镜像仓库 无论我们使用docker pull 【具体镜像名称】命令拉取镜像,还是在Kubernetes中编写yaml文件的时候,使用image: 【具体镜像名称】,其实都是从docker公共镜像仓库拉取的,一般公共镜像仓库中有很多通用的镜像文件,比如MySQL,Redis,Nginx,busybox等等。 但是对于一个私有项目来说,不可能将定制化的应用镜像放到docker的公共镜像仓库中,这时,搭建一个私有镜像仓库就非.

tianyangqi的专栏 2132

STM32F407实现LwIP的MQTT客户端并连接到服务器

这个是用LwIP协议栈中自带的MQTT客户端API写成的,代码注释很详细,附带有服务端的展示。LwIP版本是2.1.2.

wait_for_STM32的博客 6398

centos搭建k8s环境

文章对K8s环境的搭建进行了描述,给出Docker、Docker仓库、k8s环境的搭建步骤,并给出常见报错和解决办法。

qq_43403676的博客 6194

OpenHarmony 4.1/5.0 Beta上手:如何用ArkUI在非华为设备上开发你的第一个“鸿蒙”应用

本文详细介绍了如何在非华为设备上使用ArkUI开发OpenHarmony应用,涵盖从设备选型、环境搭建到应用部署的全流程。通过实战案例展示ArkTS语言在开源鸿蒙生态中的应用,帮助开发者突破设备限制,构建跨平台鸿蒙应用。

weixin_33704234的博客 367

Python爬取拼多多商品数据保姆级教程(附源码及效果图)

本文介绍了使用Python爬取拼多多商品数据的完整教程。通过DrissionPage库模拟浏览器操作,利用正则表达式提取嵌入在HTML中的商品数据(关键步骤是从window.rawData变量获取),解析后转换为结构化数据并导出Excel。教程包含八大步骤:环境配置、浏览器初始化、网络监听、搜索模拟、数据提取(核心是正则匹配JSON)、数据验证、字段解析和Excel导出,最后提供了封装好的函数可直接调用。该方法特别适合课程作业或毕业设计获取电商数据,能爬取商品名称、价格、销量等关键信息,处理了价格单位转换等

weixin_46449236的博客 2083

CentOS7 部署K8S私有镜像仓库

简单说明: 虽然已经有了《基于阿里云容器镜像服务加速K8S镜像下载》,但是K8S集群的安装依然并不方便 如果使用一些集群部署工具进行安装,如Minikube或者KubeSpray,还是需要预先知晓所有的K8S镜像并下载到实验机修改标签 现在尝试搭建一个私有的Docker Registry,并且配置使k8s.gcr.io、gcr.io和quay.io等统统指向它来加快K8S搭建速度 ...

VincentQB的博客 1461

Linux | i.MX6ULL Mqtt 移植教程

本文介绍了MQTT协议在物联网中的应用及其实现工具Mosquitto的移植过程。使用Ubuntu 16.04环境和gcc交叉编译器,详细说明了从X86平台安装测试到ARM开发板移植的完整步骤。重点包括:Mosquitto的安装配置、服务启动测试方法、依赖库openssl和libuuid的交叉编译过程、路径参数修改要点,以及最终在开发板上的功能测试验证。文中提供了具体的命令操作和路径修改示例,强调路径一致性对编译成功的重要性。该移植方案实现了轻量级MQTT协议在嵌入式设备中的应用。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 140

【亲测免费】 探索 Kubernetes 容器镜像注册中心:registry.k8s.io

探索 Kubernetes 容器镜像注册中心:registry.k8s.io 项目介绍 registry.k8s.io 是 Kubernetes 社区推出的官方容器镜像注册中心,旨在为 Kubernetes 生态系统提供一个稳定、可靠的镜像存储和分发服务。该项目实现了 registry.k8s.io 的后端逻辑,确保 Kubernetes 用户能够高效、安全地访问和管理容器镜像。 项目技术分析 r...

gitblog_00842的博客 1773

22、光无线通信调制技术详解

本文详细介绍了光无线通信中的多种调制技术,包括开关键控(OOK)、脉冲位置调制(PPM)、数字脉冲间隔调制(DPIM)、副载波强度调制(SCM)、相移键控(PSK)、正交幅度调制(QAM)以及多载波调制(MCM)如OFDM和MSIM。文章分析了各类调制技术在带宽需求、功率效率、传输容量、传输速率和PAPR等方面的性能差异,并通过Matlab仿真展示了其在AWGN信道下的误码率表现。同时,对比了不同技术的适用场景,提出了调制选择流程,并结合室内光通信与自由空间光通信的应用案例,展望了未来调制技术向高频谱效率、

net55的博客 116

完整 Bootloader 框架

本文详细介绍了嵌入式系统中Bootloader的完整框架设计。主要内容包括:1.Bootloader的核心功能模块,如应用启动、命令交互、下载功能、Flash烧写和调试维护;2.模块化设计框架,包含启动代码、驱动层、协议实现等组件;3.典型工作流程和关键模块实现,如命令行接口、命令注册机制、Flash操作等;4.应用跳转前的准备工作和安全扩展设计,如加密校验、OTA支持等。文章强调了一个成熟Bootloader在系统维护、升级和安全中的重要性,建议采用模块化、可扩展的设计方法。

m0_49476241的博客 1337

Kubernetes 使用私有镜像库配置 crictl 镜像源

通过修改containerd配置,可以完成 Kubernetes 环境下crictl的私有镜像库配置。如果镜像不存在,可以通过手动提交或配置镜像代理来解决。将上进的步骤举行完成,即可使 Kubernetes 在私有环境下正常拉取镜像。

gs80140的专栏 3172

25、BDS-3卫星信号性能与PPP-B2b增强消息完整性分析

本文对BDS-3卫星信号性能及PPP-B2b增强消息的完整性进行了系统分析。评估了MEO、IGSO和GEO卫星的轨道与时钟精度,得出BDS-3总体SISRE为0.25 m,系统完整性可覆盖99.999%的误差。分析表明SIS中断主要由时钟调整和轨道机动引起,个别卫星存在因境外监测受限导致的非计划中断。通过自研解码软件对PPP-B2b增强消息进行采集与解析,实验结果显示BDS-3和GPS的平均历元完整性率均高于98.55%,其中卫星掩码和时钟校正消息的完整性率超过99.8%。研究还发现IGSO卫星相比MEO卫

quiet的专栏 145

k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库

本文介绍了在离线环境中部署Harbor镜像仓库的完整流程。首先通过脚本创建多个Harbor项目,然后使用KubeKey工具将预打包的Kubernetes镜像(kubesphere.tar.gz)推送到Harbor仓库。接着配置containerd以支持从私有仓库拉取镜像,包括设置TLS证书和镜像仓库端点。最后解决Kubernetes 1.26.12安装过程中pause镜像的拉取问题,通过重命名本地镜像的方式替代原本需要从registry.k8s.io获取的pause镜像。整个过程涉及Harbor项目创建、镜

xinvictory的专栏 1565

【Autosar COM】Marvell 88Q5050 以太网交换机驱动技术解析

本驱动实现了对Marvell 88Q5050交换机的全面控制,通过模块化设计满足AUTOSAR规范要求。增加DMA加速机制提升大数据量处理性能实现TSN(时间敏感网络)特性支持引入异步通知机制替代轮询操作增强安全特性,如MACsec支持该驱动架构为车载以太网交换机控制提供了可靠基础,其设计思想可推广到其他车载网络控制器开发中。随着车载网络技术的演进,驱动需持续迭代以支持新特性与更高通信速率需求。

1451

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

k8s集群之Pod镜像管理+私有仓库harbor搭建

文章目录一、pod的容器分类1.1、Pod 特点1.2、Pod的容器分类二、镜像拉取策略 (image PullPolicy)2.1、尝试编辑一个pod并指定拉取策略三、搭建 k8s 的私有仓库 一、pod的容器分类 1.1、Pod 特点 最小部署单元 一组容器的集合 一个Pod中的容器共享网络命名空间 Pod是短暂的,有自己的生命周期。 1.2、Pod的容器分类 1、infrastructure container:基础容器 维护整个pod网络空间:可以在node节点操作查看容器的网络 [root@l

qq_28361541的博客 4272

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

K8S 拉取私有仓库镜像

K8S 拉取私有仓库镜像 在使用Kubernetes(k8s)从私有仓库拉取镜像时,会出现无法拉去镜像的情况,私有仓库需要认证才能访问,如果Kubernetes无法通过认证,就会导致拉取失败,这时我们就需要手动创建私有仓库的登录信息。 省流版 登录后复制 # 创建 secret # 【harbor-docker】 自定...

qq_35485206的博客 1207

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

服务镜像搭建_K8S系列学习之本地私有镜像库搭建和使用

Kubernetes学习路上的那些事儿,很有必要分享出来为什么要搭建私有镜像仓库无论我们使用docker pull 【具体镜像名称】命令拉取镜像,还是在Kubernetes中编写yaml文件的时候,使用image: 【具体镜像名称】,其实都是从docker公共镜像仓库拉取的,一般公共镜像仓库中有很多通用的镜像文件,比如MySQL,Redis,Nginx,busybox等等。但是对于一个私有项目来说...

weixin_39941792的博客 481

微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

docker私有镜像仓库Harbor的搭建,k8s环境部署私有镜像部署详细步骤

CrazyWu 1806

K8S系列学习之DockerHub自有镜像库搭建和使用

Kubernetes学习路上的那些事儿,很有必要分享出来 为什么要搭建私有镜像仓库 无论我们使用docker pull 【具体镜像名称】命令拉取镜像,还是在Kubernetes中编写yaml文件的时候,使用image: 【具体镜像名称】,其实都是从docker公共镜像仓库拉取的,一般公共镜像仓库中有很多通用的镜像文件,比如MySQL,Redis,Nginx,busybox等等。 但是对于一个私有项目来说,不可能将定制化的应用镜像放到docker的公共镜像仓库中,这时,搭建一个私有镜像仓库就非.

tianyangqi的专栏 2034

k8s 拉取镜像失败_避坑:Kubernetes中pull私有镜像

Kubernetes在自动pull私有镜像时,经常出现问题,导致ImagePullBackOff。查看kubectl describe pod ...,还经常发现这类错误:Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image ...Error response from daemo...

weixin_29218963的博客 2202
上一篇: K8s: 最佳实践经验之谈
下一篇: K8s: 应用项目部署运维环境搭建
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值