Docker 搭建本地私有仓库

news2024/11/15 10:58:15

一、搭建本地私有仓库

有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。

使用私有仓库有许多优点:

1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
2)提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

1、首先下载registry 镜像

docker pull registry

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

目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。如果需要安装registry v2,只需下载registry:2.2即可。Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库

2、在daemon.json文件中添加私有镜像仓库地址

vim /etc/ docker/daemon.json
{
"insecure-registries": ["192.168.2.200:5000"],
#添加,注意用逗号结尾"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
systemctl restart docker.service

  

3、运行 registry 容器

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest  

===================================================

-itd: 在容器中打开一个伪终端进行交互操作,并在后台运行

-v: 把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;

在容器中启动私有镜像仓库并将私有仓库的存储目录挂载到宿主机指定目录中,这样做的目的是,如果容器被删除了,存储在容器中的镜像就不会被删掉(默认情况下如果容器被删除,则存放于容器中的镜像也会丢失)

-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了

--restart=always: 这是重启的策略,在容器退出时总是重启容器

--name registry: 创建容器命名为registry

registry:latest:这个是刚才pull下来的镜像

====================================================

Docker容器的重启策略如下:

no:默认策略,在容器退出时不重启容器

on-failure: 在容器非正常退出时(退出状态非0),才会重启容器

on-failure:3 :在容器非正常退出时重启容器,最多重启3次

always: 在容器退出时总是重启容器

unless-stopped: 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

4、为镜像打标签

docker tag centos:7 192.168.2.200:5000/centos:v1

如果不对私有仓库命名的话,默认走的是公共仓库(docker hub),所以需要命名镜像。

私有仓库镜像的命名规则:宿主机ip地址:端口号/xxxx(需要更改的名称)

注意:当你对源镜像进行命名后,命名后的镜像名称也视为一个标签,因为id号是相同的。如果当源镜像删除,命名后的镜像依然会存在,因为删除的是一个标签。  

5、上传到私有仓库

dockerpush192.168.2.200:5000/centos:v1

6、列出私有仓库的所有镜像

curl http://192.168.2.200:5000/v2/_catalog

7、列出私有仓库的centos镜像有哪些tag

curl http://192.168.2.200:5000/v2/centos/tags/list

 

8、先删除原有的centos的镜像,再测试私有仓库下载

docker rmi -f 8652b9f0cb4c
docker pull 192.168.2.200:5000/centos:v1

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

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

相关文章

小灰的算法之旅---createBinaryTree 的一点点疑问

前言 深知自己算法薄弱,所以最近在补充自己算法方面的知识,《小灰的算法之旅》这本书作为入门书籍不错,当时在看到《树-深度优先遍历》的代码时,我碰到了一点疑问,经过我多次代码验证,确实是代码不太严谨。…

C语言基础(有基础)

linux下的 是一种通用的、面向过程式的计算机编程语言 #include <stdio.h> //#include 预处理命令&#xff0c;用来引用头文件&#xff0c; stdio.h 头文件 int main() //开始 {/* 一个注释 */printf("Hello, World! \n");return 0; …

docker安装mysql

在安装Mysql之前&#xff0c;我们可以先查看一下我们的镜像&#xff0c;输入命令&#xff1a; docker images 能发现&#xff0c;镜像里面只有一个Nginx&#xff0c;并没有Mysql 然后我们可以像上一篇安装Nginx一样&#xff0c;安装Mysql镜像。 输入以下命令&#xff0c;安装…

B站Python与OpenCV人脸识别项目超详细记录(对图片、视频、摄像头人脸的检测)

课程来源&#xff1a;一天搞定人脸识别项目&#xff01;学不会up直接下跪&#xff01;&#xff08;pythonopencv&#xff09;_哔哩哔哩_bilibili 图片来源&#xff1a;感谢王鹤棣先生友情出镜~ 环境配置详见&#xff1a; 在conda虚拟环境中安装OpenCv并在pycharm中使用_cond…

已解决io.UnsupportedOperation: not readable

已解决Python读取文件报错&#xff1a;io.UnsupportedOperation: not readable亲测有效 文章目录报错问题报错翻译报错原因解决方法联系博主免费帮忙解决报错报错问题 一个小伙伴遇到问题跑来私信我&#xff0c;想用Python读取文件&#xff0c;但是发生了报错&#xff08;当时他…

跟同事杠上了,Apache Beanutils为什么被禁止使用?

收录于热门专栏Java基础教程系列&#xff08;进阶篇&#xff09; 在实际的项目开发中&#xff0c;对象间赋值普遍存在&#xff0c;随着双十一、秒杀等电商过程愈加复杂&#xff0c;数据量也在不断攀升&#xff0c;效率问题&#xff0c;浮出水面。 问&#xff1a;如果是你来写…

Redis过期删除策略

目录引出Redis过期删除策略Redis的两种过期策略&#xff1a;定期删除 惰性删除定期删除惰性删除Redis两种过期删除策略存在的问题Redis缓存淘汰策略Redis中的LRU和LFU算法1、LRU&#xff08;Least Recently Userd最近最少使用&#xff09;LFU 算法的引入2、LFU&#xff08;lea…

Netty 组件学习

Netty 组件学习Netty 各个组件通俗理解EventLoopEventLoopGroup关闭ChannelFuture & PromiseHandler & PipelineByteBuf创建直接内存和堆内存池化和非池化组成方法扩容机制读取retain和release方法Netty 各个组件通俗理解 Channel即数据通道 Msg是数据&#xff0c;传…

对KMP简单的理解

声明&#xff1a;下边的例子均表示下标从1开始的数组 ne数组的定义&#xff1a; next[i] 就是使子串 s[1…i] 有最长相等前后缀的前缀的最后一位的下标。ne[i]也可以表示相等子串的长度 准备执行jne[j]时&#xff0c; 表示当前s[i]!p[j1] , 如果ne[j]1 &#xff0c;那么下…

Dubbo和Zookeeper集成分布式系统快速入门

文件结构 代码部分 1、新建provider-server导入pom依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency>&l…

golang的web框架Gin(一)---Gin的安装与初体验

简介 1.1 介绍 Go世界里最流行的Web框架&#xff0c;Github上有32Kstar。 基于httprouter开发的Web框架。 中文文档齐全&#xff0c;简单易用的轻量级框架。 Gin是一个golang的微框架&#xff0c;封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确&#xff0c;具有…

C++模板初阶

C模板初阶泛型编程函数模板概念函数模板格式函数模板原理函数模板的实例化模板参数的匹配原则类模板类模板的定义格式类模板的实例化泛型编程 我们前面学习了C的函数重载功能&#xff0c;那么我们如何实现一个通用的交换函数呢&#xff0c;比如:我传入int就是交换int&#xff…

JavaSE XML语法规则和文档约束介绍

文章目录XMLXML基本介绍XML创建和语法规则XML文档约束认识文档约束DTD约束(了解)schema约束(了解)XML XML基本介绍 XML概述: XML是可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;的缩写&#xff0c;它是一种可以自定义数据的表示格式&#xff0c;可以描述…

【mysql数据库】

目录SQL数据库分页聚合函数表跟表之间的关联关系SQL中怎么将行转成列SQL注入将一张表的部分数据更新到另一张表WHERE和HAVING的区别索引索引分类如何创建及保存MySQL的索引&#xff1f;怎么判断要不要加索引&#xff1f;索引设计原理只要创建了索引&#xff0c;就一定会走索引吗…

ESP-01S通过AT指令上报数据到阿里云物模型

ESP-01S使用AT指令上报数据到阿里云物模型 上篇文章介绍了如何用AT指令连接阿里云并进行通信&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/128995530 但最终需要将传感器数据上报到云平台显示&#xff0c;所以需要建立阿里云物模型 阿里云平台建立物…

代码随想录第62天(单调栈):● 739. 每日温度 ● 496.下一个更大元素 I

今天开启单调栈的篇章&#xff0c;一般什么时候采用单调栈&#xff1f;通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。 一、每日温度 题目描述&#xff1a; 思路和想法&#xff1a; 这里单调栈里只放数组下标&#xff0c;再了…

删除Android Studio中重复的JDK配置

问题 可能因为一些不经意的操作&#xff0c;导致如下这种情况&#xff1a;出现多余重复的JDK路径配置&#xff0c;其实指向的是同一个路径。 强迫症犯了之后&#xff0c;就会想怎么干掉这个&#xff08;2&#xff09;。 解决 第一步&#xff1a;先打开你最近打开的项目&…

开篇之作——闲聊几句AUTOSAR(2)

开篇之作——闲聊几句AUTOSAR 我是穿拖鞋的汉子,魔都中坚持长期主义的工科男! 在上一篇文章中主要介绍了啥是AUTOSAR,AUTOSAR要干点啥,以及AUTOSAR的发展历史。接下来在本文中将继续介绍: -> AUTOSAR的合作伙伴关系; -> 组织架构; -> 基础标准规范。 言归正…

微信公众号网页在本地开发模式下如何使用正式环境的域名来调试

微信公众号网页在本地开发模式下如何使用正式环境的域名来调试&#xff1f; 鄙人之前也不知道&#xff0c;网上搜了一下&#xff0c;看到的几篇文章都是要使用代理&#xff0c;有用Nginx的&#xff0c;还有自己写代理的。主要是按照步骤做了并不行。于是自己折腾了一下&#x…

缓存中间件Caffeine超详细源码解读

读源码是一件非常复杂、困难、枯燥的过程&#xff0c;这个复杂过程我给大家踩了&#xff0c;各位看官躺平看就行啦初始化入口&#xff1a;//典型的工厂模式&#xff0c;初始化一个caffeine对象 Caffeine.newBuilder();CheckReturnValue public static Caffeine<Object, Obje…