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

news/2024/12/2 2:58:23/

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

相关文章

【聊天室后端服务器开发】语音转换子服务

概述 实现逻辑 服务器搭建流程分析 基于gflags模块进行参数解析 RPC信息&#xff1a;当前服务器的地址端口&#xff0c;主要用于搭建RPC服务器的监听地址信息服务注册信息 注册中心的地址端口&#xff1a;向服务器中心进行服务注册外部访问地址端口&#xff1a;告知注册中心的…

新版本PasteSpider开发中专用部署工具介绍(让2GB的服务器也能使用CI/CD,简化你的部署过程)

如果你有linux服务器&#xff0c;可以试试这个PasteSpider&#xff0c;利用容器管理软件(docker/podman)&#xff0c;可以快速上手&#xff01; 拉取镜像并安装 【【【PasteSpider的下载和安装(支持docker的一键模式)】】】 建议使用 最简单的模式SqliteMemoryCache 测试嘛…

LINQ (C#) 中的限定符运算:全部All、任意Any、包含Contains

限定符运算返回一个 Boolean 值&#xff0c;该值指示序列中是否有一些元素满足条件或是否所有元素都满足条件。 下图描述了两个不同源序列上的两个不同限定符运算。 第一个运算询问是否有任何元素为字符“A”。 第二个运算询问是否所有元素都为字符“A”。 这两种方法在此示例…

Matlab搜索路径添加不上

发现无论是右键文件夹添加到路径&#xff0c;还是在“设置路径”中专门添加&#xff0c;我的路径始终添加不上&#xff0c;导致代码运行始终报错&#xff0c;后来将路径中的“”加号去掉后&#xff0c;就添加成功了&#xff0c;经过测试&#xff0c;路径中含有中文也可以添加成…

【论文阅读】点云预测-机器人操作

文章目录 1. 【CoRL 2024】IMAGINATION POLICY: Using Generative Point Cloud Models for Learning Manipulation Policies针对痛点和贡献摘要和结论引言方法实验思考不足之处 2. 【CVPR2023】Point Cloud Forecasting as a Proxy for 4D Occupancy Forecasting针对痛点和贡献…

计算机毕业设计Python+LSTM天气预测系统 AI大模型问答 vue.js 可视化大屏 机器学习 深度学习 Hadoop Spark

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【RISC-V CPU debug 专栏 2.2 -- Hart DM States】

文章目录 Hart DM StatesHart 的 DM 状态1. 不存在(Non-existent)2. 不可用(Unavailable)3. 运行(Running)4. 暂停(Halted)状态转换与复位行为状态指示信号Hart DM States 在 RISC-V 调试架构中,每个可以被选择的硬件线程(hart)处于以下四种调试模块(DM)状态之一…

《用Python实现3D动态旋转爱心模型》

简介 如果二维的爱心图案已经无法满足你的创意&#xff0c;那今天的内容一定适合你&#xff01;通过Python和matplotlib库&#xff0c;我们可以实现一个动态旋转的3D爱心模型&#xff0c;充满立体感和动感。# 实现代码&#xff08;完整代码底部名片私信&#xff09; 以下是完…