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

devtools/2024/12/27 11:15:17/

前言:在我之前的博客中,我分享了 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.ppmy.cn/devtools/138304.html

相关文章

thinkphp中对请求封装

请求的封装 //调用 $res Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER > [Content-Type: application/json,Content-Length: . strlen($params),],]);<?php namespace fast; /*** 字符串类*/ class Http {/*** 发送一个POST请求*/public static …

【CANOE】【Capl】【RS232】控制串口设备

系列文章目录 内置函数&#xff0c;来控制传统的串口设备&#xff0c;比如继电器等 文章目录 系列文章目录前言一、控制串口二、自定义相关的参数RS232Configure**函数语法****函数功能****参数说明****返回值****示例代码** 三、回调函数的使用RS232OnSend**函数语法****函数…

基于Matlab卷积神经网络的肺癌检测系统(良性、恶性及正常病例分类的综合分析)

本研究提出了一种基于卷积神经网络&#xff08;CNN&#xff09;的系统&#xff0c;用于对肺部组织图像进行良性、恶性和正常类别的分类。为了确保模型的高效性能和稳健性&#xff0c;该系统利用了一个经过精心构建的大规模数据集&#xff0c;该数据集包含经过专业标注的良性、恶…

新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议

为推进广东省加快发展新质生产力&#xff0c;贯彻落实“百县千镇万村高质量发展工程”&#xff0c;推动韶关市新丰县智能网联新能源汽车、低空经济与数字技术的创新与发展&#xff0c;充分发挥湾区汽车产业链头部企业的带动作用。韶关市指导、珠三角湾区智能网联新能源汽车产业…

个人博客接入github issue风格的评论,utteranc,gitment

在做个人博客的时候&#xff0c;如果你需要评论功能&#xff0c;但是又不想构建用户体系和评论模块&#xff0c;那么可以直接使用github的issue提供的接口&#xff0c;对应的开源项目有utteranc和gitment&#xff0c;尤其是前者。 它们的原理是一样的&#xff1a;在博客文章下…

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机&#xff0c;说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机&#xff0c;让用户更加专注上层&#xff0c;而不用在乎下层的一个产品。这就是JVM的跨平台&#xff0c;一次编译&#xff0c;到处运行。 而JVM中的核心功能其实就是自动…

用Pycharm安装manim

由于版本和工具的差异&#xff0c;manim的安装方式不尽相同。本文用Pycharm来安装manim. 一、准备工作&#xff1a;安装相应版本的python、pycharm和ffmpeg. 此处提供一种安装ffmpeg的方式 下载地址&#xff1a;FFmpeg 下载后&#xff0c;解压到指定目录。 配置环境变量&am…

Linux系统 异常控制流

前言 下面内容大部分来自《深入理解计算机系统》&#xff08;CSAPP&#xff09;一书第八章异常控制流&#xff0c;更深入了解建议阅读此书第八章&#xff0c;推荐阅读《UNIX高级环境编程》。 异常控制流&#xff08;Exception Control Flow, ECF&#xff09; 是计算机系统中用…