【docker】私有仓库搭建

Docker 私有仓库搭建

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry、harbor两种私有仓库搭建。

registry 的搭建

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。

# 下载镜像
docker pull registry:2
# 创建并运行容器
# 创建挂载目录
mkdir -p /mnt/d/dockerv/registry
docker run -d -v /mnt/d/dockerv/registry:/var/lib/registry -p 15000:5000 --name myregistry registry:2

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

浏览器访问http://127.0.0.1:15000/v2,出现下面情况说明registry运行正常。
在这里插入图片描述

验证

推送一个镜像到服务器上

#打包镜像
docker tag nginx:latest 192.168.110.106:15000/nginx:latest
docker push 192.168.110.106:15000/nginx:latest
#结果报错了
The push refers to repository [192.168.110.106:15000/nginx]
Get https://192.168.110.106:15000/v2/: http: server gave HTTP response to HTTPS client

报错的意思是说
因为客户端push的时候采用https协议,而registry未使用https导致的。

解决办法

如果你的harbor服务器是http访问,那么修改registry为http

vim /etc/docker/daemon.json
#修改为,增加一个key insecure-registries即可
{"registry-mirrors": ["https://rjt23nxt.mirror.aliyuncs.com"],"log-driver":"json-file","log-opts": {"max-size":"500m", "max-file":"3"},"insecure-registries":["192.168.110.106:15000","registry-docker.dlanqi.com"]
}
# 重启 docker
systemctl daemon-reload
systemctl restart docker

再次执行

docker push 192.168.110.106:15000/nginx:latest
The push refers to repository [192.168.110.106:15000/nginx]
9d1af766c818: Pushed 
d97733c0a3b6: Pushed 
c553c6ba5f13: Pushed 
48b4a40de359: Pushed 
ace9ed9bcfaf: Pushed 
764055ebc9a7: Pushed 
latest: digest: sha256:1c70a669bbf07f9862f269162d776c35144b116938d1becb4e4676270cff8f75 size: 1570

成功了,查看下浏览器

http://192.168.110.106:15000/v2/_catalog

输出结果为

{“repositories”:[“nginx”]}

看到了这个仓库了

查看镜像版本

http://192.168.110.106:15000/v2/nginx/tags/list

harbor 的搭建

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

下载

地址:https://github.com/goharbor/harbor/releases 本文是有 v1.2.2

解压下载的安装包 harbor-offline-installer-v1.2.2.tgz

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

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

相关文章

C高级 第四天

#!/bin/bash#1.实现一个对数组求和的函数,数组通过实参传递给函数 read -p "输入数组" -a arr sum0 function add() {for i in ${arr[*]}do((sumi))done } add arr echo $sum#2.写一个函数,输出当前用户的uid和gid,并使用变量接收结果 function my_id() {num1id -unu…

WebDAV之π-Disk派盘 + 小书匠

小书匠是一款功能丰富,强大的知识管理工具。全平台覆盖,离线数据存储,自定义数据服务器,所见即所得的 markdown 编辑体验。 小书匠提供了多种实用的编辑模式,例如:栏编辑、双栏编辑、三栏编辑、全屏写作、全屏阅读等。并且该软件还提供了许多有用的扩展语法,比如Latex公…

安装vCenter6.7出错 DNS服务原因

https://blog.csdn.net/seaship/article/details/107045006**A.VCSA6.7的安装**第1步,运行VCSA 6.7部署程序,中间一些截图参考何老师相关部署文章即可第2步,配置VCSA虚拟机网络,FQDN填写虚拟机分配的IP地址&#xff0c…

SQLite3 操作命令以及c/c++编程API和例子

文章目录 数据库系统SQLiteSQLite数据类型SQLite语句介绍表的创建和查看表的删除插入和修改表数据的删除复制表和修改表结构事务处理函数操作数据分组group by约束联结表视图view触发器trigger日志操作索引 index SQLite c/c编程sqlite3_opensqlite3_closesqlite3_execsqlite3_…

机器人抓取检测技术的研究现状

1.分析法 图 1 为分析法在进行抓取检测时所采用的 一般策略[3] [3]Sahbani A, El-Khoury S, Bidaud P. An overview of 3D object grasp synthesis algorithms[J]. Robotics and Autonomous Systems, 2012, 60(3): 326-336. 首先,基于环境限制和机械手与物体模 型进行抓取检…

2023.9.8 基于传输层协议 UDP 和 TCP 编写网络通信程序

目录 UDP 基于 UDP 编写网络通信程序 服务器代码 客户端代码 TCP 基于 TCP 编写网络通信程序 服务器代码 客户端代码 IDEA 打开 支持多客户端模式 UDP 特点: 无连接性:发送端和接收端不需要建立连接也可相互通信,且每个 UDP 数据包都…

行业追踪,2023-09-11

自动复盘 2023-09-11 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

JVM系列 运行时数据区

系列文章目录 第一章 运行区实验 文章目录 系列文章目录前言一、堆(Heap)1.1、新生代/Young区1.1.1、Eden区1.1.2、Survival区 1.2、年老代(old区) 二、虚拟机栈(Stack)2.1、栈顶缓存技术2.2、溢出2.3、栈…

82 # koa-bodyparser 中间件的使用以及实现

准备工作 安装依赖 npm init -y npm i koakoa 文档:https://koajs.cn/# koa 中不能用回调的方式来实现,因为 async 函数执行的时候不会等待回调完成 app.use(async (ctx, next) > {console.log(ctx.path, ctx.method);if (ctx.path "/login…

C高级day4

一、实现一个对数组求和的函数,数组通过实参传递给函数 二、写一个函数,输出当前用户的uid和gid,并使用变量接收结果 三、XMind思维导图

JavaScript学习--Day04

元字符 边界符: /^/:以什么开头 /$/:以什么结尾 量词: 预定义类:

vs2019配置sfml外部库出现的问题

问题描述 在debug模式下程序正常运行,在release模式中报错 解决 C/C Windows环境下 boost 安装使用教程 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。 Release:Release通常称为发…

基于springboot+vue的实验室耗材管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【业务功能篇105】 微服务-springcloud-springboot-电商订单模块--秒杀服务-定时任务【上篇】

秒杀服务 一、商品上架 秒杀活动的结构图 通过定时任务触发: 定时任务由spring提供,需要通过注解开启,这里通过定义一个配置类,注入spring,对其配置类进行相应的注解,当然也可以注解放在我们的服务启动类上cron表达…

Windows wsl2安装Ubuntu

wsl(Windows Subsystem for Linux)即适用于Windows的Linux子系统,是一个实现在Windows 10 / 11上运行原生Linux的技术。 wsl2 为其迭代版本,可以更好的在Windows上运行Linux子系统。 这里以 Windows 11 安装Ubuntu作为示例。 开启…

提升效率:PostgreSQL准确且快速的数据对比方法

作为一款强大而广受欢迎的开源关系型数据库管理系统,PostgreSQL 在数据库领域拥有显著的市场份额。其出色的可扩展性、稳定性使其成为众多企业和项目的首选数据库。而在很多场景下(开发|生产环境同步、备份恢复验证、数据迁移、数据合并等)&a…

“JSR303和拦截器在Java Web开发中的应用与实践“

目录 引言JSR303什么是JSR303?为什么要使用JSR303?常用注解快速入门JSR303 拦截器什么是拦截器拦截器与过滤器应用场景快速入门拦截器 总结 引言 在Java Web开发过程中,我们经常会遇到需要对输入数据进行验证和处理,同时需要对请求进行拦截与控制的需…

PyTorch深度学习实践1——线性回归和Logistic回归

PyTorch的风格 准备数据集使用类设计模型计算损失函数和优化器训练【前向、反向和更新】 线性回归 import torch# 准备数据集 # x,y是矩阵,3行1列 也就是说总共有3个数据,每个数据只有1个特征 x_data torch.tensor([[1.0], [2.0], [3.0]]) y_data to…

Modelsim仿真问题解疑二:ERROR: [USF-ModelSim-70]

现象:在Vivado中已配置modelsim为仿真工具后,运行仿真,报错USF-ModelSim-70和ERROR: [Vivado 12-4473] 详细报错内容如下 ERROR: [USF-ModelSim-70] compile step failed with error(s) while executing C:/Users/ZYP_PC/Desktop/verilog_t…

python趣味编程-恐龙克隆游戏

Python 中使用 Turtle 的恐龙克隆游戏免费源代码 使用 Turtle 的恐龙克隆游戏是一个用Python编程语言编码的桌面游戏应用程序。该项目包含在 Chrome 浏览器中克隆实际恐龙游戏的多种功能。该项目可以使正在修读 IT 相关课程的学生受益。这个应用程序非常有趣,可以帮助您学习创…