docker本地私有库和harbor仓库

news/2024/4/28 17:59:58/文章来源:https://blog.csdn.net/m0_71518373/article/details/127427922

目录

docker仓库

一、docker私有仓库

Ⅰ、安装运行

Ⅱ、上传镜像

Ⅲ、拉取私有库镜像

二、harbor仓库

Ⅰ、前提需要

Ⅱ、创建证书文件

Ⅲ、下载安装harbor

Ⅳ、harbor的管理

Ⅴ、浏览器访问管理

①登录

报错

②上传镜像

③拉取镜像


docker仓库

仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。

一、docker私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

Ⅰ、安装运行

mkdir -p /opt/registry 创立挂载点
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 registry:2
#直接运行run,让docker拉取镜像
docker images

 确保容器处于运行状态,我们在浏览器上对本地5000端口进行访问

Ⅱ、上传镜像

 要将镜像上传到私有仓库,需要给镜像打上特定的tag,否则就是上传至公共仓库

docker tag centos:7 lcalhost:5000/centos:7

进行上传

docker push localhost:5000/centos:7

在命令行或浏览器上进行查看

curl -XGET http://192.168.116.22:5000/v2/_catalog{"repositories":["centos"]}

表示上传成功

Ⅲ、拉取私有库镜像

 先删掉本地源镜像,再进行镜像拉取

docker pull localhost:5000/centos:7

私人库镜像拉取成功 

二、harbor仓库

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求

Ⅰ、前提需要

先进行docker-compose的下载安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

Ⅱ、创建证书文件

openssl genrsa -des3 -out server.key 2048
#生成密钥文件
openssl req -new -key server.key -out server.csr
#生成证书请求文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
#生成根证书

将证书文件存放到/data/cert(配置文件中指定) 

mv server.* ./data/cert/

Ⅲ、下载安装harbor

wget https://github.com/vmware/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz

解压、修改配置文件;运行 install.sh 构建镜像,并把服务启动起来

tar -zxvf harbor-offline-installer-v1.2.2.tgz -C /optvim /opt/harbor-offline-installer-v1.2.2.tgz/harbor.cfg
#==================省略部分内容=========================
hostname = 192.168.116.22  
#用于访问用户界面和register服务,不能是localhost/0.0.0.0
#==================省略部分内容=========================
db_password = root123
#数据库密码
#==================省略部分内容=========================
harbor_admin_password = Harbor12345
#admin用户的密码
#==================省略部分内容=========================
ssl_cert = ./data/cert/server.crt
ssl_cert_key = ./data/cert/server.key
#上文证书的存放目录
#==================省略部分内容=========================
secretkey_path = ./data
#==================省略部分内容=========================----wq./install.sh
#进行安装

docker-compose ps

Ⅳ、harbor的管理

使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与docker-compose.yml 相同的目录中运行。

修改harbor配置文件流程:

1.停止现有的 harbour 实例并更新 harbor.cfg
2.运行 prepare 脚本来填充配置
3.重新创建并启动 harbour 的实例

docker-compose ps -a
#查看docker-compose容器情况
docker-compose down -v
#卸载Harbor
docker-compose up -d
#启动Harbor
docker-compose start
#启动相关容器
docker-compose stop
#关闭相关容器

Ⅴ、浏览器访问管理

①登录

 在浏览器上访问http://192.168.116.22

报错

http页面错误码:502

经过排查,发现harbor启动的容器之一adminserver一直处于restarting状态

通过查看日志信息

cat /var/log/2022-10-20/adminserver.log

可以发现,问题出在docker-compose.yml文件里的这个位置

 解决:检查harbor.cfg和docker-compose.yml中对应的目录位置是否都一样

进行登录操作,用户admin,密码在前面编辑的harbor.cfg文件中

②上传镜像

 创建项目

 此时可使用docker命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Register 服务器在端口 80 上侦听

docker tag tomcat:test 192.168.116.22/myproject-free/tomcat:testdocker images
REPOSITORY                            TAG   IMAGE ID      CREATED       SIZE
192.168.116.22/myproject-free/tomcat  test  7537d2b4b9e1  45 hours ago  807MBdocker login -u admin -p Harbor12345 http://127.0.0.1
#登录harbor库docker push 192.168.116.22/myproject-free/tomcat:test

此时,发生报错

当我们使用127.0.0.1代替我们的本地IP时,又可以正常执行了, 但如果其他客户端上传或拉取镜像到 Harbor,就又会报如下错误。出现这问题的原因 Docker Registry 交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时这样的错误

 解决

vim /usr/lib/systemd/system/docker.service
ExecStart= ** //--insecure-registry 192.168.116.22 **

systemctl daemon-reloadsystemctl restart docker

重启后如果docker-compose up -d,仍有容器一直处于重启(restarting),可以尝试去到harbor目录下重新./install.sh

再次尝试上传镜像;登录成功

 镜像上传成功

 

③拉取镜像

将192.168.116.22/free/centos:7镜像删除 

从我们的harbor库中重新拉取这个镜像

docker pull 192.168.116.22/free/centos:7

拉取成功 

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

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

相关文章

Vue3 + ElementPlus 前端实现分片上传

目录 1. 什么是分片上传 2. 上传组件模板 3. 上传组件逻辑 3.1 基本思路 3.2 选择上传文件 3.3 校验文件是否合法 3.4 文件加密 3.5 合并文件 3.6 文件切片上传 4. 参考文章 4.1 文章链接 4.2 参考文章提到的注意事项 4.2.1 nginx 上传大小限制 4.2.2 大文件下载…

Excel中的HLOOKUP、VLOOKUP、XLOOKUP函数

昨天使用INDEX和MATCH两个EXCEL函数完成了表中数据的快速查找,想一想,EXCEL中还有另外的查找函数,比如HLOOKUP、VLOOKUP、LOOKUP、XLOOKUP函数,那使用它们能不能完成同样的操作呢?   可以的。   仍然是昨天的问题&…

window下,cuda版本和NVIDIA驱动版本关系,cuda版本 和 TensorFlow-GPU版本关系,TensorFlow-GPU安装

一、cuda安装,cuda 和 TensorFlow 版本对应,链接https://www.tensorflow.org/install/source#tested_source_configurations 1.查看自己安装的驱动版本, nvidia-smi 2.安装所需要的cuda,下载链接CUDA Toolkit Archive | NVIDIA Developer 找…

微信小程序云开发入门-数据库插入数据(包含批量)

一、前言 文章将介绍如何在微信小程序云开发中向云开发数据库插入数据(单条或批量)。 写法有好几种,文章将会一一进行对比,看看每种写法之间有何优缺点,如何让代码看起来更优雅。 为了更加贴合实际的开发逻辑&#xf…

Unity重启 --- 工具介绍部分 (面板与工具条)

第一部分 --- Project项目资源面板 1.两类常用文件 --- PNG图像文件和FBX文件(游戏模型文件) 2.每一个项目文件夹中都会自动创建一个资源Assets文件夹,我们各类美术资源,游戏脚本都是放在这个文件夹中的 3.在Unity中资源文件夹会…

操作系统实验三:死锁避免程序设计

银行家算法:Python模拟与实现一、实验目的二、实验内容三、实验要求四、实验代码结果展示全部代码一、实验目的 1、 理解死锁产生的基本原理,以及死锁的必要条件; 2、 掌握死锁避免的基本原理与思路。 二、实验内容 试利用银行家算法对死锁…

人工神经网络概念及组成,人工神经网络基本结构

1、简述人工神经网络的结构形式 神经网络有多种分类方式,例如,按网络性能可分为连续型与离散型网络,确定型与随机型网络:按网络拓扑结构可分为前向神经网络与反馈神经网络。本章土要简介前向神经网络、反馈神经网络和自组织特征映射神经网络…

postman使用excel参数批量执行

postman使用excel参数批量执行第一步,写好连接,报错。参数使用{{name}},这样的划分。保存接口第二步,找到runner。选择接口所在的文件夹,点击runner 第三步,选择接口和文件 点击run,运行,等待接口执行完成

百多安医疗冲刺科创板:半年营收1亿 为张海军与郭海宏夫妻店

雷递网 雷建平 10月20日山东百多安医疗器械股份有限公司(简称:“百多安医疗”)日前递交招股书,准备在科创板上市。百多安医疗计划募资7.6亿元,其中,2.64亿元用于医用导管产业化升级项目,2.48亿元…

《软件测试》实验2:嵌入式软件测试实验报告

文章目录实验目的温度控制器需求文档及测试要求环境搭建实验内容温度采集处理功能测试加热棒输出电压测试散热风扇温度传感器输入接口(Senser_JK)控制加热棒输出接口(Heater_JK)控制散热风扇输出接口(Fan_JK&#xff0…

《设计模式:可复用面向对象软件的基础》——结构型模式(2)(笔记)

文章目录四、结构型模式4.4 DECORATOR(装饰)——对象结构型模式1.意图2.别名补充部分3.动机4.适用性5.结构6.参与者7.协作8.效果9.实现10.代码示例11.相关模式4.5 FACADE(外观)1.意图2.动机3.适用性4.结构5.参与者6.协作7.效果8.实现9.代码示制10.相关模…

Postgresql中yacc语法树冲突解决方法(shift/reduce conflicts)

处理方法 Postgresql中的gram.y可以独立编译,独立编译可以控制bison的参数来打印具体错误: PG15 cd src/backend/parserbison -d -o gram.c gram.y -Wno-deprecated正常执行后会产生gram.c文件,一旦发生冲突,bison会报错&#…

设计模式—关于如何更好的封装与创建对象

上一节我们主要学习了使用设计模式来写代码的指导思想以及设计模式的分门别类,本节主要学习创建型的三种设计模式是怎么使用的。如何利用创建型设计模式来指导我们更好的封装代码更好的创建对象。 为什么要封装?封装能带给我们什么好处?定义变量不会污染外部:封装的首要目的…

神经网络图像识别技术,神经网络指纹识别

1、声纹识别技术未来的发展趋势如何? 近几年来,我国生物识别技术行业市场主体数量呈迅速增长的趋势,截至目前,行业企业数量超4000家。据统计,2013-2018年,我国生物识别技术行业新增企业数量呈逐年增长的趋…

【编程题】【Scratch四级】2022.06 成绩查询

成绩查询 期末考试结束了,小朋友想知道自己考试的成绩和班级排名,让我们一起来实现这个功能吧! 1. 准备工作 (1)保留默认白色背景和小猫角色; (2)创建名为“姓名”和“成绩”的列表,按照图1输入相关内容。 2. 功能实现 (1)点击小绿旗,小猫询问“你要查询谁的成…

JS(第十课)JS中的对象

Com.Java.Basis第九课 《类与对象》_星辰镜的博客-CSDN博客 有兴趣的可以去看一下 本文内容核心:对象 在百度翻译中对象称为object 安装插件 第一部分去找找在JS中对象的语法是什么 如何去创建对象的,调用对象! var name"李四"; var people…

图形学-(视图变换,投影变换)

1.视图变换 在 3 维物体变到二维平面的过程中,我们需要规定好相机的位置。对于相机所做的变换就是视图变换 (Viewing/Camera transformation)。 我们需要对相机位置进行定义,对于一个相机我们要规定下面三个属性: 相…

Transformer3

又是 一篇关于Transformer的~~ 太多了 本文结合Transformer和ConvNets的优点,构造了一种新的即插即用运算符ParC,可以高效地部署在不同的平台上。一个Trick 搞定 CNN与Transformer,即插即涨点即提速! 论文链接:http…

Ansible自动化运维工具介绍与部署

ansible自动化运维工具介绍与部署 文章目录一、什么是自动化运维?二、常用的自动化运维工具2.1 Ansible2.2 SaltStack2.3 Puppet2.4 三种自动化工具特点对比三、介绍Ansible3.1 什么是 Ansible?3.2 Ansible 无需代理3.3 Ansible 方式四、部署Ansible4.1 控制节点4.…

U-BOOT小全(三):SPL框架

1、什么是SPL? 为了可以使已有的所有SPL的设计统一,也为了简化添加适用于新板子的设计,专门设计一个通用的SPL框架。在SPL框架下,一个板子的所有代码都能够被重用。代码复制和链接不再是必要的。 在uboot-2011的/doc/README.spl…