Docker Registry私有仓库详解

引言

   在Docker生态系统中,容器镜像的管理至关重要。Docker公共仓库(如Docker Hub)为开发者提供了便捷的镜像托管服务,但出于安全、隐私及网络性能的考虑,许多企业和组织更倾向于搭建自己的Docker私有仓库。本文将详细探讨Docker私有仓库的概念、特点、应用场景、管理方法以及扩展策略,重点关注Registry和Harbor两种解决方案。 

Docker Registry概述

Docker Registry是Docker官方提供的容器镜像仓库,用于存储和分发Docker镜像。通过搭建私有的Docker Registry,企业可以实现对容器镜像的集中管理,确保镜像的安全性和可控性。

Registry搭建命令

1. 拉取Registry镜像

首先,我们需要从Docker Hub上拉取最新的Registry镜像。可以使用以下命令:

docker pull registry:latest

2. 创建Registry容器

接下来,我们使用Docker命令来创建并运行Registry容器。同时,我们需要指定端口映射和数据卷挂载。以下是一个示例命令:

docker run -d \
--name registry \
-p 5000:5000 \
-v /opt/myregistry:/var/lib/registry \
registry:latest
  • --name registry:为容器指定一个名称,这里我们命名为registry
  • -p 5000:5000:将容器的5000端口映射到宿主机的5000端口。
  • -v /opt/myregistry:/var/lib/registry:将宿主机的/opt/myregistry目录挂载到容器的/var/lib/registry目录,用于存储镜像数据。

3. 验证Registry容器状态

使用以下命令查看Registry容器是否正在运行:

docker ps | grep registry

如果看到类似以下的输出,表示Registry容器正在运行:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0123456789ab registry:latest "/entrypoint.sh /etc…" 10 seconds ago Up 9 seconds 0.0.0.0:5000->5000/tcp registry

命令解析

docker pull registry:latest

  • docker pull:从Docker Hub或其他镜像仓库拉取镜像。
  • registry:latest:指定要拉取的镜像名称和标签,这里我们拉取的是Registry的最新版本(latest标签)。

docker run ... registry:latest

  • docker run:创建并运行一个新的容器实例。
  • -d:以后台模式运行容器。
  • --name registry:为容器指定一个名称。
  • -p 5000:5000:端口映射,将宿主机的5000端口映射到容器的5000端口。
  • -v /opt/myregistry:/var/lib/registry:数据卷挂载,将宿主机的目录挂载到容器的目录。
  • registry:latest:指定要运行的镜像名称和标签。

实战:使用Registry

1. 上传镜像到Registry

在上传镜像之前,需要确保Docker守护进程已经配置了私有Registry的地址。编辑/etc/docker/daemon.json文件(如果该文件不存在,则创建它),并添加以下内容:

 

json复制代码

{
"insecure-registries": ["localhost:5000"]
}

保存文件后,重启Docker服务使配置生效:

sudo systemctl restart docker

然后,给需要上传的镜像打上一个新的标签,指定Registry的地址和端口:

 
docker tag myimage:latest localhost:5000/myimage:latest

最后,使用docker push命令将镜像推送到Registry:

docker push localhost:5000/myimage:latest

2. 从Registry下载镜像

在另一台Docker主机上,同样需要配置insecure-registries来允许从非安全的Registry下载镜像。配置方法与上传镜像时相同。

配置完成后,使用docker pull命令从Registry下载镜像:

docker pull localhost:5000/myimage:latest

3. 测试Registry

你可以使用curl命令来测试Registry是否正常运行:

curl http://localhost:5000/v2/_catalog

如果Registry正常运行,你将看到一个包含所有仓库名称的JSON响应。如果没有任何镜像被推送到Registry,则响应可能为空。

以上就是对Docker Registry私有仓库的详细解释和实战操作。通过搭建和使用私有Registry,你可以更好地管理和分发Docker镜像。

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

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

相关文章

Ubuntu C++ man手册安装及使用

Ubuntu下C++ man手册安装 C++在线文档: http://www.cplusplus.com/reference/ 第一种办法:使用cppman $ sudo apt install cppman 使用方法 第二种办法: 打开网页:GCC mirror sites- GNU Project 点击下图中的突显行链接: Russia, Novosibirsk:

Spring:SpringBoot项目中忽略某属性返回给前端

文章目录 一、忽略实体类中的属性1、JsonIgnore2、JSONField(serialize false)3、JsonInclude 二、忽略实体类中的方法返回值 一、忽略实体类中的属性 1、JsonIgnore JsonIgnore注解是Jackson库中的一个注解,用于在实体类向前台返回数据时忽略不想传递给前台的属…

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例 引言1. UniMRCP和UmcFramework简介2. 准备工作3. unimrcpclient.xml配置文件3.1 定义SIP设置3.2 定义MRCP会话配置文件 4. C代码示例5. 测试和验证6. 故障排查7. 结论8. 参考文献 引言 在多媒体通信…

小剧场短剧影视小程序源码_后端PHP

项目运行截图 源码贡献 https://githubs.xyz/boot?app42 部署说明 linux/win任选 PHP版本:7.3/7.2(测试时我用的7.2要安装sg扩展 ) 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个…

微服务之SpringCloud AlibabaSeata处理分布式事务

一、概述 1.1背景 一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题 but 关系型数据库提供的能力是基于单机事务的,一旦遇到分布式事务场景,就需要通过更多其他技术手段来解决问题。 全局事务:…

蓝桥杯单片机之模块代码《秒表》

文章目录 定时器/计数器1.工作原理2.总代码 省赛代码传送门 定时器/计数器 1.工作原理 定时器/计数器是一种能够对内部时钟信号或者外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断请求,从而实现定时或计数功能的外设。定时器的…

使用 Lua 协程模拟 Golang 的 go defer 编程模式

封装 go 函数 在 使用 Lua 协程处理异步回调函数 中已经介绍 这里简要列下: 封装 go 函数---go 函数创建并启动一个协程 ---param _co_task function 函数原型 fun(_co:thread) function go(_co_task)local co coroutine.create(_co_task) -- 创建的协程是暂停的…

【论文阅读】ChipNeMo中的数据集处理

前面总体学习了《ChipNeMo: Domain-Adapted LLMs for Chip Design》,然后又继续仔细看了论文中的领域适配分词和领域数据微调的预训练检索模型,对于数据集的处理,也需要仔细看一下。 提炼重点:1)对于数据集&#xff0…

Golang中的Json标签(持续更新...)

目录 字段标签对应表 字段标签对应表 在Go语言中,结构体(struct)的字段标签(Field Tags)通常用于为字段提供额外的元数据,这些元数据可以由反射(reflect 包)或其他库(如…

第1篇:创建Platform Designer系统

Q:本期我们开始使用Platform Designer工具创建带IP核的FPGA自定义硬件系统。 A:Platform Designer是集成在Quartus软件里的系统设计工具,名称随着Quartus的不断更新曾命名为SOPC Builder和Qsys。 使用Platform Designer可以添加Quartus已有自…

安卓数据库SQLite

目录 一、SQLite数据库二、SQLiteOpenHelper和SQLiteDatabase2.1 SQLiteOpenHelper2.2 SQLiteDatabase 三、常见数据库使用介绍3.1 创建数据库3.2 插入数据3.3 修改数据(升级数据库)3.4 删除数据3.5 查询数据3.6 关闭数据库3.7 删除数据库 一、SQLite数据…

基于uniapp vue3.0 uView 做一个点单页面(包括加入购物车动画和左右联动)

1、实现效果&#xff1a; 下拉有自定义组件&#xff08;商品卡片、进步器、侧边栏等&#xff09;源码 2、左右联动功能 使用scroll-view来做右边的菜单页&#xff0c;title的id动态绑定充当锚点 <scroll-view :scroll-into-view"toView" scroll-with-animation…

OSPF基本配置

原理概述 OSPF 是一种应用非常广泛的基于链路状态的动态路由协议&#xff0c;它具有区域&#xff08; Area )化的层次结构&#xff0c;扩展性好&#xff0c;收敛速度快&#xff0c;适合部署在各种规模的网络上。 在 OSPF 中&#xff0c;每台路由器都必须有一个 Router-I…

Centos 安装python3.12.3

下载python3.12.3 https://www.python.org/downloads/release/python-3123/ 安装 yum -y install gcc zlib zlib-devel libffi libffi-devel yum install readline-devel yum install bzip2-devel yum install epel-release yum install openssl-devel export CFLAGS$(pkg-c…

仓储机器人确实蛮卷的~

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 视频来源于Agilox。 仓储机器人&#xff0c;无疑是现代物流业的一大亮点。它们小巧灵活&#xff0c;却能承担起繁重…

CentOS-Stream-9添加删除账户

添加普通用户&#xff0c;既可以登录系统&#xff0c;也可以访问服务 useradd -s /bin/bash -m abc 添加abc用户&#xff0c;自动创建目录。 passwd abc 设置用户密码 添加不能登录系统的用户&#xff0c;可以访问ftp服务 vim /etc/shells&#xff0c;在其中添加一行/sbin/…

线上线下交友陪玩,支持小程序/app/h5三端打包,源码搭建!

社交APP定制开发的好处&#xff1a; 社交APP定制开发能够根据用户需求进行个性化定制&#xff0c;满足用户对于社交功能的特殊需求。不同用户对社交的理解和需求各不相同&#xff0c;定制开发可以根据用户的要求&#xff0c;提供更加个性化和专属的社交功能&#xff0c;为用户…

Teamcity为Azure的git源颁发ssh-rsa证书,使用ssl-keygen在macos下操作

Teamcity通过git,持续集成Azure源的项目时,总出现最近总出如下类似的错误: failed to checkout and determine revision: unable to list remote for ssh://gitssh.dev.azure.com/v3/<organization_name>/<project_name>/<repo_name>: unknown error: remot…

Zapier 与生成式 AI 的自动化(一)

原文&#xff1a;zh.annas-archive.org/md5/057fe0c351c5365f1188d1f44806abda 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 当组织处理手动和重复性任务时&#xff0c;生产力会遇到重大问题。Zapier 处于无代码运动的前沿&#xff0c;提供了一种先进的工具&a…

Flutter运行项目一直:running gradle task

大体原因就是访问国外的资源由于网络等原因导致访问失败&#xff0c;解决方法就是换成国内的源 修改项目的android/build.gradle 文件&#xff0c;将里面的 google() mavenCentral()替换为 maven {allowInsecureProtocol trueurl https://maven.aliyun.com/repository/googl…