Skip to content

duma520/Docker_Image_Puller_dumafu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Docker镜像下载工具(杜玛府版)

起源版:https://github.com/topcss/docker-pull-tar

因为众所周知的原因,原版 1.0.7 版本下载只是单线程,但是RAGFlow 0.17.0 高达9G,下载完大概第4到6个文件的时候就认证就超时了, 本着源码不变的情况下增加多线程就算的原则,对于Python还是小白程度的我,只能求助AI,但众所周知,有时候AI想的,跟我想的不太一样,出现的问题也不一样,大概就跟钢铁侠整那套钢铁一样,通过不断地迭代,最终整了一个自己的版本出来。


已经安装了Python的:python docker_image_puller6.py infiniflow/ragflow:v0.17.0 -r docker.1ms.run -t 20 默认Docker仓库可以:python docker_image_puller6.py infiniflow/ragflow:v0.17.0 打包成exe文件可以使用 PyInstaller(推荐) 这里我也写一下,怕我自己都忘记了。

将Python脚本打包为EXE文件可通过多种工具实现,以下是详细步骤和常见方法:


方法一:使用 PyInstaller(推荐)

优点:跨平台、简单易用、支持生成单个EXE文件。
步骤

  1. 安装 PyInstaller

    pip install pyinstaller
  2. 基本打包命令
    在脚本目录下执行:

    pyinstaller -F your_script.py
    • -F 生成单个EXE文件(默认生成包含依赖的文件夹)。
    • 生成文件位于 dist/ 目录。
  3. 添加资源文件(如图片、数据)
    使用 --add-data 指定资源路径(格式:源路径;目标路径):

    pyinstaller -F --add-data "images/*.png;images" your_script.py
  4. 自定义图标

    pyinstaller -F --icon=app.ico your_script.py
  5. 减少体积(使用UPX压缩)

    • 下载 UPX 并解压。
    pyinstaller -F --upx-dir=C:\path\to\upx your_script.py
  6. 调试打包问题

    • 添加 --debug 生成调试版本。
    • 在命令行运行EXE查看报错。

方法二:使用 cx_Freeze

优点:适合分发包包含多个文件。
步骤

  1. 安装 cx_Freeze

    pip install cx_Freeze
  2. 创建 setup.py 文件

    from cx_Freeze import setup, Executable
    
    setup(
        name="YourApp",
        version="1.0",
        description="Description",
        executables=[Executable("your_script.py", icon="app.ico")],
        options={
            "build_exe": {
                "packages": ["os"],
                "include_files": ["images/", "data.txt"],
            }
        }
    )
  3. 生成EXE

    python setup.py build
    • 结果在 build/ 目录。

方法三:使用 py2exe(仅Windows)

步骤

  1. 安装 py2exe

    pip install py2exe
  2. 创建 setup.py

    from distutils.core import setup
    import py2exe
    
    setup(console=["your_script.py"])
  3. 生成EXE

    python setup.py py2exe

常见问题解决

  1. EXE闪退

    • 在命令行运行EXE查看报错。
    • 确保所有依赖资源通过 --add-data 正确添加。
  2. 路径问题
    使用以下代码兼容打包后的路径:

    import sys
    import os
    
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.dirname(__file__)
    resource_path = os.path.join(base_path, "images/image.png")
  3. 杀毒软件误报
    使用代码签名证书签名EXE,或提示用户添加信任。


总结

  • 推荐工具:PyInstaller(适合快速生成单文件)或 cx_Freeze(适合复杂配置)。
  • 注意事项:测试不同系统环境、处理资源路径、压缩体积使用UPX。

按需求选择工具,按步骤操作即可顺利打包!


infiniflow/ragflow:v0.17.0 表示下载 infiniflow/ragflow ,版本是 0.17.0 docker.1ms.run:不写就是默认官方的 Docker Hub ,写就是第三方的地址 -t 20 :线程数,1到20,100兆宽度AI建议是 15线程,具体自己体验调整。 其他具体自己看说明书。 论Python我是完全不懂,自己写的程序以前是易语言,现在是易语言新的哪个火山软件。其他就没有了。

再次特别感谢 https://github.com/topcss/docker-pull-tar ,也希望大家一如既往地支持 https://github.com/topcss/docker-pull-tar。

以下是说明书:Docker镜像下载工具(杜玛府版)

好的,我需要为用户提供一个软件使用说明。用户之前遇到了代码问题,现在问题已经解决,现在需要根据最新的代码编写使用说明。首先,我需要回顾用户之前的对话,了解软件的功能、安装步骤、参数选项、错误处理等。

用户之前提供的代码是一个Docker镜像下载工具,支持多线程、断点续传、认证、校验等功能。使用说明应该包括以下几个部分:

  1. 软件简介:说明工具的功能和适用场景。
  2. 环境要求:Python版本、依赖库的安装。
  3. 安装步骤:如何获取和安装工具。
  4. 使用教程:基本命令、参数说明、示例。
  5. 高级功能:断点续传、带宽控制、自定义配置等。
  6. 错误处理:常见错误及解决方法。
  7. 注意事项:网络要求、存储空间、线程建议等。
  8. 版本信息:当前版本和更新方式。

需要确保使用说明清晰易懂,步骤详细,并且包含示例命令。此外,要参考用户之前提供的使用手册结构,保持一致性。例如,用户之前的说明有快速入门、参数表格、高级配置等部分,需要沿用类似的格式。

需要检查是否有新功能需要补充,例如在最新代码中添加的兼容性处理和断点续传功能。同时,注意用户之前遇到的错误,如认证失败、超时等,应在错误处理部分提供解决方案。

另外,要使用适当的Markdown格式,如代码块、表格、列表等,提高可读性。确保所有命令和参数准确无误,与当前代码匹配。

最后,确保语言简洁明了,避免技术术语过多,方便不同层次的用户理解和使用。

Docker镜像下载工具使用手册

一、软件简介

本工具专为高效下载Docker镜像层设计,支持多线程加速、智能断点续传、自动校验等核心功能。适用于以下场景:

  • 离线环境部署:预先下载镜像层用于离线服务器
  • 网络优化:自动重试机制保障弱网环境稳定传输
  • 批量操作:支持通过脚本批量下载多个镜像
  • 私有仓库管理:集成认证机制,支持私有仓库访问

二、环境要求

系统兼容性

  • Windows 10/11 (x64)
  • Linux (内核4.4+)
  • macOS 12+

软件依赖

  • Python 3.8+
  • 必需库:requests>=2.25, tqdm>=4.60, urllib3>=1.26

Docker Puller界面示意图


三、快速安装

# 1. 下载工具
git clone https://github.com/yourrepo/docker-puller.git
cd docker-puller

# 2. 安装依赖
pip install -r requirements.txt

# 3. 授权执行(Linux/macOS)
chmod +x docker_image_puller6.py

四、基础使用

下载官方镜像

python docker_image_puller6.py nginx:latest

指定私有仓库

python docker_image_puller6.py myapp:v1.2 -r registry.example.com

多线程加速

# 推荐10-15线程
python docker_image_puller6.py large_image:tag -t 12

下载目录结构

├── library_nginx_layers/
│   ├── sha256_8d584/       # 分层存储
│   │   ├── layer.tar       # 层数据
│   │   └── meta.json       # 元信息
└── docker_puller.log       # 运行日志

五、参数说明

参数 必填 默认值 说明
image - 镜像名称(格式:repo/image:tag)
-r/--registry registry.hub.docker.com 仓库地址
-t/--threads 5 下载线程数(1-20)
-v/--verbose - 显示调试信息

六、高级功能

1. 断点续传

当下载中断时,重新运行命令会自动继续未完成的下载:

# 首次运行(中断于第5层)
python docker_image_puller6.py large_image:tag

# 重新运行自动续传
python docker_image_puller6.py large_image:tag

2. 带宽控制

通过配置文件调整下载速率(新建config.ini):

[network]
max_bandwidth = 50M  # 支持单位:K/M/G
timeout = 1800

3. 自定义存储路径

修改约第170行代码:

# 原路径
layer_dir = os.path.join(f"{self.repo.replace('/', '_')}_layers", ...)

# 修改为
layer_dir = os.path.join("/mnt/storage", "docker_layers", ...)

七、错误处理指南

常见问题排查

错误现象 解决方案
401 Unauthorized 检查镜像权限,确认-r参数正确
ReadTimeoutError 增大READ_TIMEOUT值或减少线程数
Digest mismatch 删除对应层目录重新下载
ConnectionReset 添加重试参数--retry 10

日志分析

# 查看实时日志
tail -f docker_puller.log

# 搜索特定错误
grep -i "error" docker_puller.log

八、性能优化建议

  1. 网络配置

    • 企业防火墙开放443端口
    • 配置镜像仓库的DNS解析缓存
  2. 存储优化

    # 使用RAMDISK加速(Linux)
    mkdir -p /mnt/ramdisk
    mount -t tmpfs -o size=10G tmpfs /mnt/ramdisk
  3. 线程调优公式

    推荐线程数 = (带宽MBps × 8) / 平均层大小MB
    

九、版本更新

# 通过Git更新
git pull origin master

# 查看版本
python docker_image_puller6.py --version

当前版本:v3.3.2 (更新日期:2024-03-15)


十、技术支持

获取帮助:

[立即下载Windows版] | 查看API文档

提示:使用--help获取实时帮助信息
python docker_image_puller6.py --help

About

Docker镜像下载工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published