使用 Docker Compose 部署 Docker Registry

在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。本文将详细介绍如何使用Docker Compose快速部署Docker Registry,并开始轻松应对这一镜像管理问题。此外,我们还将介绍如何将您的镜像传输到阿里云容器镜像服务,为您提供更广泛的镜像管理和分发选项。

dockerRegistry.jpg

第一步:创建docker-compose.yml文件

首先我们创建一个Registry的部署目录 Registry,在目录registry 下创建一个 docker-compose.yml 文件,内容如下:

version: "3.8"
services:registry:privileged: true     #这里把权限配置成trueimage: registry      #镜像来源restart: always      #开机后自己启动container_name: registry   #自定义服务名ports:               #暴露端口- 5000:5000volumes:            #挂载目录配置- ./data:/var/lib/registryweb:image: konradkleine/docker-registry-frontend:v2restart: alwaysports:- 8035:80environment:- ENV_DOCKER_REGISTRY_HOST=192.168.10.106- ENV_DOCKER_REGISTRY_PORT=5000

registry服务就是我们镜像仓库的服务,web服务会给我们提供一个可视化的web页面,方便我们查看镜像,web服务中配置的环境变量就是我们仓库服务registry的ip和端口

第二步:启动服务

在docker-compose.yml统计目录下执行如下命令启动容器:

docker-compose up -d 

查看容器启动日志

docker-compose logs -f 

如果不出意外的话我们的服务就启动了

第三步:使用仓库

配置 Docker 客户端

为了能够推送和拉取镜像,我们需要在 Docker 客户端(服务器)配置 Registry 地址。打开 Docker 配置文件(通常是 /etc/docker/daemon.json 并添加 Registry 地址:

{"insecure-registries": ["http://192.168.10.106:5000"]
}

重启docker,确保 Docker 客户端重新加载配置,以使更改生效。

sudo systemctl restart docker   

测试 Registry

查看本地镜像:

docker images

示例:

xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$

找到要上传的镜像,然后,将该镜像重新标记为本地 Registry 的地址:

docker tag a7115c9ef551 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker tag a7115c9ef551 192.168.10.106:5000/xj/jenkins:1.0.0
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
192.168.10.106:5000/xj/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$

最后,推送标记的镜像到本地 Registry:

docker push 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker push 192.168.10.106:5000/xj/jenkins:1.0.0
The push refers to repository [192.168.10.106:5000/xj/jenkins]
5f70bf18a086: Mounted from xj/mdnice
a30b1d65deb1: Pushed
7746b0a769ee: Pushed
5d62eace5f20: Pushed
9c6b971806be: Pushed
f88a5e4ffedf: Pushed
083e56fe83eb: Pushed
cc1aa31be4c7: Pushed
e7542699c5f9: Pushed
7bda4b78c961: Pushed
32b6e276d5a8: Pushed
eabefec3772e: Pushed
e145a64deaba: Pushed
31dbd8e7ce5e: Pushed
ebb8d7205eaa: Pushed
cb23a9220de6: Pushed
734cd72d093f: Pushed
992e88d23f64: Pushed
2730a34737a7: Pushed
2cd46f43e9fc: Pushed
1c1312c0dc73: Pushed
3cb48b2a745d: Pushed
cd10e235b4bd: Pushed
92ebff64190b: Pushed
d8705911861f: Pushed
58fc268a6ace: Pushed
1a058d5342cc: Pushed
1.0.0: digest: sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613 size: 5984
xiuji@xiuji:~/docker/registry$

推送之后我们就可以在web服务的页面中看到了:

访问web服务: http://192.168.10.106:8035/

_20240106112156.jpg

_20240106112208.jpg

_20240106112246.jpg

_20240106112308.jpg

推送到阿里云容器镜像

如果我们想把镜像推送到公网,那么我们就可以使用阿里云容器镜像,虽然个人容器镜像托管服务是限额使用的,但额度对于我们个人使用的话已经足够了

镜像服务地址: https://cr.console.aliyun.com/cn-hangzhou/instances

_20240106112929.jpg

上传操作阿里云仓库有详细的说明,我们此处简单列举下:

  • 登录阿里云Docker Registry
$ docker login --username=youname registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

  • 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]
  • 将镜像推送到Registry
$ docker login --username=youname registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/younamew/jenkins:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]

推送之后也可以设置镜像的权限

_20240106113543.jpg

删除tag

随着我们在服务器上 tag的增多,为了方便服务器上镜像的查看,我们也可以上传之后删除tag

docker image rm 192.168.10.106:5000/xj/jenkins:1.0.0

示例:

xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
192.168.10.106:5000/xj/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker image rm 192.168.10.106:5000/xj/jenkins:1.0.0
Untagged: 192.168.10.106:5000/xj/jenkins:1.0.0
Untagged: 192.168.10.106:5000/xj/jenkins@sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$ docker images | grep jenkins
xj/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB
xiuji@xiuji:~/docker/registry$
xiuji@xiuji:~/docker/registry$

对于docker 镜像操作不太熟悉的家人们也可以翻阅下我们之前的文章《深入了解Docker镜像操作》

总结

通过使用 Docker Compose,我们可以轻松地在本地部署 Docker Registry,并开始使用自己的私有镜像存储。这为团队协作和镜像管理提供了更多的灵活性。希望这篇文章对您部署 Docker Registry 有所帮助!

每日闲谈

今天是周末,透过窗外的晴朗天气,决定吃过饭出门晃晃,进行一些锻炼。在我们生活中,健康是最为重要的财富。尤其是在冬季,气候相对干燥,这时候更应该多喝水,多出门走走,增加活动量。保持一个健康的身体才是最明智的选择。与家人一同享受户外活动,呼吸新鲜空气,不仅有益于身体健康,也能在轻松愉悦的氛围中增进家庭成员之间的感情。

_20240106120150.jpg

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

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

相关文章

[SwiftUI]工程最低适配iOS13

问题: 新建工程,选择最低支持iOS13报错: main() is only available in iOS 14.0 or newer Scene is only available in iOS 14.0 or newer WindowGroup is only available in iOS 14.0 or newer 解决: 注释掉上面代码&#x…

分布式系统架构设计之分布式缓存技术选型

一、概述 随着互联网业务的快速发展,分布式系统已经成为了解决大规模并发请求、高可用性、可扩展性等问题的重要手段。在分布式系统中,缓存作为提高系统性能的关键技术,能够显著降低数据库负载、减少网络延迟、提高数据访问速度。当面对大量…

jetson orin配置yolov8运行环境

配置yolov8环境 当前jetpack版本为5.1.1,对应的torch为1.14.0版本,torchvision版本为0.14.1,CUDA版本为11.4.315.opencv with cuda 版本4.5.4,tensorrt版本5.1.1。pytorch1.12.0 torchvision0.13.0 具体对应关系查看https://foru…

eureka注册列表 某服务出现多个服务实例

最近文件导出功能偶发成功,大部分情况都失败,开始以为接口被拦截,gateway服务没有接口调用日志,发现测试环境可以,正式环境功能无法正常使用。 偶然看到注册中心如下 发现file服务有3个实例,调用接口将错误…

基于单片机的农田灌溉系统(论文+源码)

1.系统设计 本系统主要实现如下目标: 1.可以实时监测土壤湿度; 2.土壤湿度太低时,进行浇水操作; 3.可以按键设置湿度的触发阈值; 4. 可以实现远程操控 5.可以实现手…

Vue中使用Element UI的Table组件实现嵌套表格(最简单示例)

以下是一个简单的示例代码&#xff0c;演示如何在Vue中使用Element UI的Table组件实现嵌套表格&#xff1a; html <template><div><el-table :data"tableData" style"width: 100%"><el-table-column prop"name" label&quo…

安卓作业002 - 用户登录窗口

文章目录 安卓作业002 - 用户登录窗口一、界面设计思路二、涉及的知识点概览三、界面实现步骤四、启动应用查看结果五、任务完成总结安卓作业002 - 用户登录窗口 利用到布局嵌套实现复杂界面居中对齐,利用线性布局的gravity属性标签、编辑框、按钮三种控件编辑框的提示信息,利…

实习记录留存

0.前提 实习结束了我留个档方便以后查看 校内实习玩具_哔哩哔哩_bilibili 不如这个爽 带兄弟们飙车_哔哩哔哩_bilibili

第九节HarmonyOS 常用基础组件6-progress

1、描述 进度条组件用于显示内容加载或操作处理等进度。 2、接口 Progress(options:{value:number,total?Number, type?:ProgressType}) 参数&#xff1a; 参数名 参数类型 必填 参数描述 value number 是 指定当前进度值。设置小于0的数值时置为0&#xff0c;设置…

各银行小微企业信贷相关产品和机器学习建模案例

各银行小微企业贷款业务 互联网的时代&#xff0c;大量新信息技术的涌现和网络的无处不在&#xff0c;想要抢占这片金融天地&#xff0c;必须重视小微金融业务&#xff0c;小微企业是一直具有重大潜力的客户&#xff0c;商业银行、消金公司发展小微信贷业务可以拓宽自身客户群…

嵌入式系统复习--基于ARM的嵌入式程序设计

文章目录 上一篇编译环境ADS编译环境下的伪操作GNU编译环境下的伪操作ARM汇编语言的伪指令 汇编语言程序设计相关运算操作符汇编语言格式汇编语言程序重点C语言的一些技巧 下一篇 上一篇 嵌入式系统复习–Thumb指令集 编译环境 ADS/SDT IDE开发环境&#xff1a;它由ARM公司开…

西电期末1025.平滑滤波

一.题目 二.分析与思路 别光看公式&#xff0c;读题干&#xff1a;“位置i的输出为距离i最近的三个输入的平均值”&#xff0c;再看示例&#xff0c;输入几个&#xff0c;输出几个&#xff0c;所以就是输出每个位置距离最近的三个输入的平均值&#xff0c;中间没什么问题&…

HarmonyOS 应用开发学习笔记 状态管理概述

移动端开发&#xff0c;最重要的一点就是数据的处理&#xff0c;并且正确的显示渲染UI。 变量在页面和组件、组件和组件之间有时候并不能实时共享&#xff0c;而有时候&#xff0c;又不需要太多的作用域&#xff08;节省资源&#xff09;&#xff0c;作用就需要根据不同场景&am…

11.2 Linux串口驱动框架

tty 驱动程序框架 tty 驱动程序从下往上分别是设备驱动层、行规程、终端虚拟化、TTY I/O层&#xff0c;它们的功能如下&#xff1a; 设备驱动层&#xff1a;用于驱动设备&#xff0c;如串口、显示器、键盘等。行规程&#xff1a;用于处理控制字符、回显输入数据、缓存输入数据…

如何获取unicode字符串的LPCWSTR?

今天在学习window编程方面的内容时&#xff0c;我想要修改一个窗口的标题&#xff0c;这个标题的内容是窗口的高度&#xff0c;这就遇到一个问题&#xff0c;设置标题的方法是SetWindowText&#xff0c;其第二个形参是LPCWSTR类型&#xff0c;怎么把内容显示到窗口标题栏上呢&a…

两数之和 ? 三数之和? 四数之和? 统统搞定

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 前言 声明…

useContext

可以跨组件传值 其实主要的就是三步 1、const xxx React.createContext();创建一个context 2、<xxx.Provider value{{ num, setNum }}>父组件设置要传递的值 3、const { num, setNum } React.useContext(xxx);子组件下使用 特点&#xff1a; 1、可以有多个xxx.Pr…

【数字图像处理技术与应用】2023-2024上图像处理期中-云南农业大学

一、填空题&#xff08;每空2 分&#xff0c;共 30 分&#xff09; 1、图像就是3D 场景在 二维 平面上的影像&#xff0c;根据其存储方式和表现形式&#xff0c;可以将图像分为 模拟 图像和数字图像两大类&#xff1b; 2、在用计算机对数字图像处理中&#xff0c;常用一个 二…

全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——2023年国赛模拟题-linux应急响应

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步…

MATLAB - MPC - 优化问题(Optimization Problem)

系列文章目录 前言 模型预测控制可在每个控制间隔内解决一个优化问题&#xff0c;具体来说就是二次规划(QP)。求解结果决定了被控对象在下一个控制间隔之前使用的操纵变量&#xff08;MV&#xff09;。 该 QP 问题具有以下特点&#xff1a; 目标或 "成本 "函数 - …