首页 > 其他分享 >如何优雅地从Lxc镜像偷rootfs

如何优雅地从Lxc镜像偷rootfs

时间:2024-11-01 15:51:38浏览次数:3  
标签:LXC Lxc cloud MIRROR images 镜像 ARCH 20240929 rootfs

首先我们拿到一个lxc镜像的链接,咱觉得bfsu的速度就很不错。
https://mirrors.bfsu.edu.cn/lxc-images/images
点进去,顺着目录就能找到rootfs.tar.xz,下载就完了。
本文完,就这么简单。
当然不是啊喂!我们要做到自动获取rootfs链接。

镜像列表:

LXC_MIRROR_MAIN="http://images.linuxcontainers.org"
LXC_MIRROR_BFSU="https://mirrors.bfsu.edu.cn/lxc-images"
LXC_MIRROR_TUNA="https://mirrors.tuna.tsinghua.edu.cn/lxc-images"
LXC_MIRROR_NJU="https://mirror.nju.edu.cn/lxc-images"
LXC_MIRROR_ISCAS="https://mirror.iscas.ac.cn/lxc-images"
function select_mirror() {
  case ${MIRROR} in
  "bfsu")
    export LXC_MIRROR=${LXC_MIRROR_BFSU}
    ;;
  "tuna")
    export LXC_MIRROR=${LXC_MIRROR_TUNA}
    ;;
  "nju")
    export LXC_MIRROR=${LXC_MIRROR_NJU}
    ;;
  "iscas")
    export LXC_MIRROR=${LXC_MIRROR_ISCAS}
    ;;
  "main" | "")
    export LXC_MIRROR=${LXC_MIRROR_MAIN}
    ;;
  *)
    echo -e "\033[31mUnknow mirror!\033[0m"
    exit 1
    ;;
  esac
}

目前咱就搜集了这几个。

index文件:

在镜像的/meta/1.0/index-system位置我们可以找到当前的镜像索引,这个文件长这样:

almalinux;8;amd64;cloud;20240929_23:08;/images/almalinux/8/amd64/cloud/20240929_23:08/
almalinux;8;amd64;default;20240929_23:08;/images/almalinux/8/amd64/default/20240929_23:08/
almalinux;8;arm64;cloud;20240929_23:08;/images/almalinux/8/arm64/cloud/20240929_23:08/
almalinux;8;arm64;default;20240929_23:08;/images/almalinux/8/arm64/default/20240929_23:08/
almalinux;9;amd64;cloud;20240929_23:08;/images/almalinux/9/amd64/cloud/20240929_23:08/
almalinux;9;amd64;default;20240929_23:08;/images/almalinux/9/amd64/default/20240929_23:08/
almalinux;9;arm64;cloud;20240929_23:08;/images/almalinux/9/arm64/cloud/20240929_23:08/
almalinux;9;arm64;default;20240929_23:08;/images/almalinux/9/arm64/default/20240929_23:08/
alpine;3.17;amd64;cloud;20240929_13:00;/images/alpine/3.17/amd64/cloud/20240929_13:00/
alpine;3.17;amd64;default;20240929_13:00;/images/alpine/3.17/amd64/default/20240929_13:00/
alpine;3.17;arm64;cloud;20240929_13:00;/images/alpine/3.17/arm64/cloud/20240929_13:00/
alpine;3.17;arm64;default;20240929_13:00;/images/alpine/3.17/arm64/default/20240929_13:00/
alpine;3.17;armhf;cloud;20240929_13:00;/images/alpine/3.17/armhf/cloud/20240929_13:00/
alpine;3.17;armhf;default;20240929_13:00;/images/alpine/3.17/armhf/default/20240929_13:00/
alpine;3.18;amd64;cloud;20240929_13:00;/images/alpine/3.18/amd64/cloud/20240929_13:00/

可以看到格式非常清晰明了:

os;version;arch;type;time;dir
os;version;arch;type;time;dir

获取cpu架构:

直接从tmoe抄一段就行:

function get_cpu_arch() {
  # It will create a global variable CPU_ARCH
  # From tmoe
  if [[ $(command -v dpkg) && $(command -v apt-get) ]]; then
    DPKG_ARCH=$(dpkg --print-architecture)
    case ${DPKG_ARCH} in
    armel) ARCH_TYPE="armel" ;;
    armv7* | armv8l | armhf | arm) ARCH_TYPE="armhf" ;;
    aarch64 | arm64* | armv8* | arm*) ARCH_TYPE="arm64" ;;
    i*86 | x86) ARCH_TYPE="i386" ;;
    x86_64 | amd64) ARCH_TYPE="amd64" ;;
    *) ARCH_TYPE=${DPKG_ARCH} ;;
    esac
  else
    UNAME_ARCH=$(uname -m)
    case ${UNAME_ARCH} in
    armv7* | armv8l) ARCH_TYPE="armhf" ;;
    armv[1-6]*) ARCH_TYPE="armel" ;;
    aarch64 | armv8* | arm64 | arm*) ARCH_TYPE="arm64" ;;
    x86_64 | amd64) ARCH_TYPE="amd64" ;;
    i*86 | x86) ARCH_TYPE="i386" ;;
    s390*) ARCH_TYPE="s390x" ;;
    ppc*) ARCH_TYPE="ppc64el" ;;
    mips64) ARCH_TYPE="mips64el" ;;
    mips*) ARCH_TYPE="mipsel" ;;
    risc*) ARCH_TYPE="riscv64" ;;
    *) ARCH_TYPE=${UNAME_ARCH} ;;
    esac
  fi
  export CPU_ARCH=${ARCH_TYPE}
}

获取镜像:

需要设置好LXC_MIRROR,DISTRO,VERSION,CPU_ARCH这三个变量,

PATH=$(curl -sL "${LXC_MIRROR}/meta/1.0/index-system" | grep ${DISTRO} | grep ${VERSION} | grep ${CPU_ARCH} | grep -v cloud | tail -n 1 | cut -d ";" -f 6)
echo ${LXC_MIRROR}${PATH}rootfs.tar.xz

这样就可以获取到rootfs的链接了,还是相当简单的。

搜索镜像:

列出所有镜像:

function list_distros() {
  # It will print the distro name if any version of distro is available for current ${CPU_ARCH}
  # $MIRROR and $CPU_ARCH are defined at main()
  if [[ ${CPU_ARCH} == "" ]]; then
    get_cpu_arch
  fi
  export MIRROR=${MIRROR}
  select_mirror
  for i in $(curl -sL ${LXC_MIRROR}/meta/1.0/index-system | grep ${CPU_ARCH} | grep -v cloud | cut -d ";" -f 1 | uniq); do
    echo -e "[${CPU_ARCH}] $i"
  done
}

搜索镜像版本号:

function list_distro_version() {
  # If the version of the distro is available, print it
  # $MIRROR, $DISTRO and $CPU_ARCH are defined at main()
  if [[ ${DISTRO} == "" ]]; then
    echo -e "\033[31mOS distro not set.\033[0m"
    exit 1
  fi
  if [[ ${CPU_ARCH} == "" ]]; then
    get_cpu_arch
  fi
  export MIRROR=${MIRROR}
  select_mirror
  if [[ $(curl -sL "${LXC_MIRROR}/meta/1.0/index-system" | grep ${DISTRO} | grep ${CPU_ARCH}) == "" ]]; then
    echo -e "\033[31mCould not found image for current cpu architecture.\033[0m"
    exit 1
  fi
  for i in $(curl -sL "${LXC_MIRROR}/meta/1.0/index-system" | grep ${DISTRO} | grep ${CPU_ARCH} | grep -v cloud | cut -d ";" -f 1,2); do
    echo -e "[${CPU_ARCH}] $(echo $i | cut -d ";" -f 1) : $(echo $i | cut -d ";" -f 2)"
  done
}

后记:

没有后记喵!散会!

标签:LXC,Lxc,cloud,MIRROR,images,镜像,ARCH,20240929,rootfs
From: https://www.cnblogs.com/Moe-hacker/p/18520403

相关文章

  • 浅析Dockerhub API:如何优雅地从dockerhub偷rootfs镜像
    成品:https://github.com/Moe-hacker/docker_image_puller前言:八月初的时候,咱无聊去扒了下dockerhub的接口,想通过网络请求直接从dockerhub偷镜像。然后写完才想起来dockkerhub在国内是被墙的,似乎这么一个功能用处也不大。。。。。然后咱就去旅游了,连项目Readme都没写(逃)。至于......
  • 构建Node.js的应用镜像
    在现代软件开发中,Docker已成为构建和部署应用的重要工具。今天,我们将深入探讨如何优化一个Node.js应用的Dockerfile,以支持多版本、多语言,并保持构建环境的干净。首先,让我们看看我们的基础Dockerfile:#构建阶段:使用Node.js16和DebianBuster作为基础镜像FROMno......
  • 关于构建镜像-python的rpc服务打镜像
    要在离线Docker环境中构建并导出amd64架构的Docker镜像,你可以按照以下步骤操作:1.确保使用正确的基础镜像首先,确保Dockerfile中的基础镜像是适用于amd64架构的。例如,你可以使用python:slim作为基础镜像。如果已经在离线环境中启动了python:slim镜像,这里不需要做任......
  • [专有网络VPC]创建和管理流量镜像
    通过流量镜像功能,您可以将符合筛选条件的经过弹性网卡ENI的网络流量复制并发送到指定目的实例,从而实现对网络流量的监控和分析需求。前提条件初次使用时,请登录流量镜像开通页面,根据提示开通流量镜像功能。如果镜像会话中的镜像源和镜像目的不属于同一个专有网络VPC(Virtual......
  • Stable Diffusion Web UI 1.9.4 Docker 基础镜像
    镜像的构建会需要科学上网,不会的人,最好的方式就是花钱购买境外服务器。本文使用:Windwos11+WSL(Ubuntu22.04)进行镜像构建,使用 Clash代理。读者相同环境,实现代理需要两项配置-配置一:WSL开启镜像模式-配置二:Clash开启局域网访问模式+TUN模式即可让WSL中的......
  • Debian 基础镜像与容器构建最佳实践指南
    引言在容器化应用开发中,选择合适的基础镜像至关重要。Debian作为一个稳定、安全且广受欢迎的Linux发行版,其官方Docker镜像成为了许多开发者的首选。本文将深入探讨Debian基础镜像的类型、特点,以及如何在容器构建中有效地使用它们。1.Debian基础镜像概述Debian......
  • 24小时搜书网站及zlibrary中文镜像网站/客户端app(更新中)
    24小时搜书网站是一个基于IPFS的电子书搜索引擎,它提供了丰富的电子书资源,覆盖文学、心理、艺术、设计、小说等多个领域。以下是该网站的一些主要特点:资源丰富:24小时搜书网站收录了超过12.7万本图书,支持通过书名、作者、出版社、ISBN编号等多种方式进行搜索。多种格式下载:用户可......
  • 24小时搜书store及Z-library镜像地址/客户端/app
    24小时搜书是一个提供电子书搜索和下载服务的平台,它允许用户通过互联网搜索和获取电子书资源。以下是一些可能的特点和功能:搜索功能:用户可以通过书名、作者、ISBN号等关键词来搜索想要的电子书。资源丰富:平台可能包含多种语言和类型的电子书,覆盖小说、教育、科技等多个领域。多......
  • 猫头虎分享:2024最新 Docker 国内可用镜像源仓库地址
    ......
  • macOS Sequoia 15.1 (24B83) Boot ISO 原版可引导镜像下载
    macOSSequoia15.1(24B83)BootISO原版可引导镜像下载iPhone镜像、Safari浏览器重大更新和AppleIntelligence等众多全新功能令Mac使用体验再升级请访问原文链接:macOSSequoia15.1(24B83)BootISO原版可引导镜像下载查看最新版。原创作品,转载请保留出处。......