Docker 实战:搭建本地 Registry 私有镜像仓库及批量导入脚本

news/2024/11/27 21:19:52/文章来源:https://www.cnblogs.com/zhoutuo/p/18572817

前言:在我之前的博客中,我分享了 Harbor 仓库搭建的详细操作步骤。然而,在实际的生产环境中,并非每个 Docker 环境都需要部署一个规模庞大的 Harbor 仓库。有时,一个轻量级的本地 Registry 私有镜像仓库会更为便捷。本文将介绍如何搭建一个本地 Registry 私有镜像仓库,并提供一个自动化脚本,用于从其他环境批量 “save” 众多镜像包后,一键自动导入到本地 Registry 私有镜像仓库。

第一步:上传 registry 的镜像到 Docker服务器上

第二步:创建本地镜像仓库存储卷
命令:mkdir -p /data/registry
命令:docker load -i registry-2.7.1.tar

第三步:运行 registry 服务
命令:docker run -d --name registry -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always registry.szlanyou.com/lke/registry:2.7.1

第四步:修改 docker 配置文件,增加以下配置
这个命令的配置在各docker节点都需要做
命令:vim /etc/docker/daemon.json
添加:

   {"insecure-registries": ["<ip>:5000"]}


参考详细信息:

{"log-opts": {"max-size": "5m","max-file": "3"},"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"],"exec-opts": ["native.cgroupdriver=systemd"],"insecure-registries": ["ip:5000"]
}

第五步:重启 docker 服务让配置生效
这两个命令各个节点都需要执行

  systemctl daemon-reloadsystemctl restart docker

第六步:上传本地镜像到Docker服务器上,并执行以下命令,生成imagelist.txt文件
命令:docker images | grep -v REPOSITORY | awk '{OFS=":";print $1,$2}' > imagelist.txt

第七步:执行image_push.sh自动化脚本将镜像服务批量上传到本地仓库

#!/bin/bash# 设置新镜像仓库的域名和旧域名
new_domain="<ip>:5000"
old_domain="<abc.dfmc.com.cn>"# 读取imagelist.txt文件中的每一行
while IFS= read -r line; do# 检查镜像是否存在if [[ $(docker images -q "$line") ]]; then# 替换旧域名new_image=$(echo "$line" | sed "s|$old_domain|$new_domain|")# 打印信息,确认哪些镜像将被打包echo "Retagging $line -> $new_image"# 重新标记镜像docker tag "$line" "$new_image"# 推送镜像到新的仓库echo "Pushing $new_image"docker push "$new_image"elseecho "Image not found: $line"fi
done < imagelist.txt

注意:以上替换为具体仓库所在服务器ip,<abc.dfmc.com.cn>替换为旧镜像地址域名
上保存后执行 sh image_push.sh 命令,等待镜像上传到本地仓库后即可

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

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

相关文章

Chrome联合Opera/Vivaldi/Waterfox等成立联盟对抗Microsoft Edge

日前在欧盟有个新的行业联盟成立,这个行业联盟名为浏览器选择联盟,主要成员包括 Google Chrome、Opera、Vivaldi、Waterfox 和 Wavebox。 成立联盟的主要目的是对抗微软的 Microsoft Edge 浏览器,该联盟致力于呼吁 / 游说欧盟将 MicROSoft Edge 按照数字市场法案列为看门人…

MySQL原理简介—12.MySQL主从同步

大纲 1.异步复制为MySQL搭建一套主从复制架构 2.半同步复制为MySQL搭建一套主从复制架构 3.GTID为MySQL搭建一套主从复制架构 4.并行复制降低主从同步延迟或强制读主库1.异步复制为MySQL搭建一套主从复制架构 (1)MySQL主从复制的原理 (2)搭建主从复制架构的配置(1)MySQL主从复制…

java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)

java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)@目录说明:基础工具类MsgPageResultResponseBusinessDomainEnum(枚举)EsDocumentConstants(常量)本人其他文章链接 说明:基础工具类Msg package com.geespace.microservices.data.computing.model.…

[MYSQL] MYSQL 时间与时区

MYSQL 版本:MYSQL 5.7.38-221001-logMYSQL 时间与时区概述 GMT(格林尼治标准时间、世界时间) 与 UTC(协调世界时间)‌GMT(Greenwich Mean Time,格林威治标准时间)‌:GMT是基于地球自转和对恒星的观测来定义的时间标准,将地球划分为24个时区。它以英国伦敦郊区的格林尼治天文…

51单片机入门:数码管(3)

数码管简介数码管每段其本质就是个LED灯,只需要控制特定的LED灯亮就能显示数据。普中开发版所使用的是两个并在一起共阴极连接的“4位数码管”,可以同时显示8个数字。数码管的显示可以分成静态显示和动态显示,这里先介绍最简单的静态显示。数码管分为共阴极连接和共阳极连接…

使用java在未知表字段情况下通过sql查询信息

使用java在未知表字段情况下通过sql查询信息场景 在只知道表名,不知道表包含哪些字段情况下,查询该表信息的场景 解决方案 @Testpublic void test() {Connection connection;String DB_URL = "jdbc:mysql://192.168.20.75:9950/geespace_bd_platform_dev?characterEnco…

WnRAR将rar后缀格式文件转成zip后缀格式

前言全局说明使用 winRAR 自带的转换功能,可以最大程度的保留原始信息, 比如: 打包时间、CRC32值等一、说明 环境: Windows 11 家庭版 23H2 22631.3737 WinRAR 6.00(32位)二、rar 转 zip 2.12.2 选择要转换的文件 右边可以根据类型筛选2.3 选择要转成的格式 zip2.4 选择转成输…

opensuse系统下QtCreator中文输入法失效解决,亲测有效

首先安装QTCreator,这里不再详细赘述。克隆fcitx-qt5仓库,然后在该目录下新建build文件 克隆命令如下git clone https://gitcode.com/gh_mirrors/fc/fcitx-qt5.git安装cmakezypper install cmake进入到build目录 运行命令cmake ..报错如下 解决办法 运行如下指令 sudo zypper…

数值分析:线性方程组的直接解法(上)

提纲背景介绍 三角方程组 Gauss消去法 附录一、背景介绍 1.1 线性方程组的相关概念 线性方程组在解决现实师姐问题中直接产生,最小二乘数据拟合、微分方程边值问题和初边值问题的数值解产生了大量的线性方程组。 线性方程组系数矩阵的类型分别有稠密型(dense):几乎所有元素都…

第十三次作业

1、MS08-067、MS10-018漏洞复现,对比bind和reverse攻击模式的区别 MS08-067: 输入msfconsole进入msf终端查找ms08-067漏洞利用模块使用查找出来的攻击模块查看该攻击模块下所需的配置信息设置攻击payload查看并设置靶机地址查看targets选择攻击目标再次检查配置信息关闭目标地…

TIA下SCL做交通灯控制程序完善

和前一篇一样,我希望在没有点击停止按钮时,多次点击开始按钮不要中断当前流程。 在FB程序变量的static组添加BOOL类型running变量。修改SCL程序如下 IF #stopbtn=1 THEN   #CurrentState := 4;   #Running := 0;END_IF; IF (#Running = 0) AND (#startbrn=1) THEN …

【随手记录】IDEA里面pom文件被忽略,变灰、画横线处理

在setting --> Build -->Build Tools --> Maven 下找到ignored files选项,去掉pom文件的勾选框,重新加载项目即可!