首页 > 其他分享 >Docker 实战:搭建本地 Registry 私有镜像仓库及批量导入脚本

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

时间:2024-11-27 21:22:21浏览次数:5  
标签:仓库 image Registry new 镜像 Docker docker registry

前言:在我之前的博客中,我分享了 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-reload
  systemctl 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"
    else
        echo "Image not found: $line"
    fi
done < imagelist.txt

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

标签:仓库,image,Registry,new,镜像,Docker,docker,registry
From: https://www.cnblogs.com/zhoutuo/p/18572817

相关文章

  • Ubuntu安装Docker及Docker-compose
    Ubuntu安装Docker及Docker-Compose安装Docker卸载服务器内存在的Dockersudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc更新软件包升级服务器的软件sudoapt-getupdatesudoapt-getupgrade安装Docker依赖sudoapt-getinstallca-certific......
  • ChatGPT国内中文版镜像网站整理合集(2024/11/28更新)
    一、GPT中文镜像站① https://chat.lify.vip支持GPT4、4o以及o1,支持MJ绘画什么是镜像站   镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类似的服务和信息。ChatGPT镜像站的用途   绕过访问限......
  • docker下安装Harbor
    安装docker-compose#安装docker-composecurl-Lhttps://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/docker-compose#添加docker-compose执行权限chmod+x/usr/local/bin/docker-compose#查看版本do......
  • 通过本地私有的镜像仓库harbor解决网络原因导致的jdk无法加载而造成的docker打包错误
    ​各种网络原因,或是docker.io无法访问,或是阿里的镜像源故障,导致java打包发布的时候报错,很影响代码发布的质量。解决思路:墙出去把jdk下载下来,代码使用本地的harbor库进行引用,一劳永逸。此解决方法也适用于国外优质不频繁变动的镜像源的本地化使用。解决方法1.墙出去,把需要......
  • Docker 代理和权限问题
    Docker代理设置/etc/docker/daemon.jsonsudotee/etc/docker/daemon.json<<EOF{"proxies":{"http-proxy":"http://10.0.114.195:7890","https-proxy":"http://10.0.114.195:7890","no-pr......
  • Dockerfile基本语法
    Dockerfile是一种文本文件,用于定义Docker镜像的内容和构建步骤。它包含一系列指令,每个指令代表一个构建步骤,从基础镜像开始,逐步构建出最终的镜像。通过Dockerfile,用户可以精确地描述应用程序运行环境的配置、依赖项安装、文件复制等操作。这使得应用程序的部署和分发变得更加可控......
  • 0基础 学习 通过docker实现域名绑定访问网站
    dockerpullnginx#下载nginx镜像dockerimages#查看镜像dockerimagels#查看镜像dockerpullnginx:1.26.0#下载镜像完整代码dockerpull镜像名:版本号dockerpullnginx#简洁版下载镜像(最新)dockerrmi+IMAGEid或者镜像名:版本号#删除镜像id可以只输入前三......
  • 如何构建和发布 npm 包到 GitHub Package Registry?
    如何构建和发布npm包到GitHubPackageRegistry?发表于 2023/12/19  更新于 2023/12/23作者 小王爷4分钟阅读本文将指导您在GitHubPackages上构建和发布npm到GPR。npm:全称NodePackageManager,NodeJs包管理和分发的工具。GPR:全称GitHubPackageRegi......
  • 当使用docker命令时:docker images ....... ,结果出现了Error response from daemon:
    当使用docker命令时:dockerimages.......,结果出现了Errorresponsefromdaemon:Get"https://registry-1.docker.io/v2/":proxyconnecttcp:dialtcp:lookuphttpon127.0.0.1:53:nosuchhost这种情况一般是:意味着文件无法被写入,可能是由于权限不足、文件不存在、......
  • Docker使用及原理
    Docker使用及原理created:2024-08-19T16:54+08:00modified:2024-11-27T11:21+08:00published:2024-11-27T11:41+08:00categories:devops在了解什么是docker之前,先思考操作系统给进程提供了什么:通过文件系统为进程提供文件操作为进程提供了网络访问,如端口监听等......