title: 同步dockerhub镜像仓库
id: 8a51dc8a-a870-4124-8894-0ac883b56e00
date: 2025-07-23 15:49:26
auther: djd221
cover: https://chevereto.lovemascot.cn/i/2024/10/26/671bc1a1e824a.webp
excerpt: 同步dockerhub镜像仓库 摘自:https//github.com/sqing33/docker-image-sync-to-registry 克隆仓库 git clone https//github.com/sqing33/docker-image-sync-to-registry.gi
permalink: /archives/5a000816-648a-4f58-bb1b-f212bac91fd0
categories:
- docker
- default
- du-shu-bi-ji
tags: - docker
-
zhi-shi-ku
同步dockerhub镜像仓库
摘自:https://github.com/sqing33/docker-image-sync-to-registry
- 克隆仓库
git clone https://github.com/sqing33/docker-image-sync-to-registry.git
cd docker-image-sync-to-registry
- 配置环境:
- 编辑docker-compose.yml文件,设置必要的环境变量
- 配置daemon.json文件,设置Registry地址和镜像加速
- 启动服务
docker-compose up -d
配置说明
- docker-compose.yml配置
services:
image-sync:
image: sqing33/docker-image-sync-to-registry # ghcr.io/sqing33/docker-image-sync-to-registry
container_name: docker-image-sync-to-registry
privileged: true
environment:
- REGISTRY_URL=http://registry:5000 # 镜像仓库地址
- CRON_SCHEDULE=0 4 * * * # 每天凌晨4点执行
- SYNC_ON_START=true # 容器启动时立即同步
- TARGET_ARCH=linux/amd64 # 目标架构(linux/amd64,linux/arm64)
- REMOVE_LIBRARY_PREFIX_ON_LOCAL=true # 是否移除本地镜像的library/前缀
- MAX_PAGES_PER_CATEGORY=1 # 控制 Python 脚本爬取的页数
- CRAWL_AFTER_CUSTOM_IMAGES=true # 拉取custom_images镜像列表之后是否继续爬取DockerHub
- HTTP_PROXY=http://192.168.1.100:7890
- HTTPS_PROXY=http://192.168.1.100:7890
- NO_PROXY=localhost,127.0.0.1,docker.1panel.live,docker.1ms.run,http://registry:5000
volumes:
- /etc/timezone:/etc/timezone:ro # 容器时区同步宿主机
- /etc/localtime:/etc/localtime:ro # 容器时间同步宿主机
- /vol1/1000/Docker/docker-image-sync-to-registry/daemon.json:/etc/docker/daemon.json # 设置容器Docker加速源
- /vol3/1000/Docker镜像仓库/docker缓存:/var/lib/docker/overlay2 # 挂载容器Docker下载镜像的目录
- /vol1/1000/Docker/docker-image-sync-to-registry/custom_images.txt:/app/custom_images.txt:ro # 自定义镜像列表文件
附带部署 registry 的示例:
version: "3"
services:
registry:
image: registry:2 # ghcr.io/sqing33/registry
container_name: registry
restart: always
ports:
- 1500:5000
volumes:
- /vol3/1000/Docker镜像仓库:/var/lib/registry
environment:
- REGISTRY_STORAGE_DELETE_ENABLED=true # 启用删除功能
networks:
- registry
registry-ui:
image: quiq/registry-ui # ghcr.io/sqing33/registry-ui
container_name: registry-ui
restart: always
volumes:
- /vol1/1000/Docker/registry/config.yml:/opt/config.yml:ro
ports:
- 1501:8000
networks:
- registry
docker-image-sync:
image: sqing33/docker-image-sync-to-registry # ghcr.io/sqing33/docker-image-sync-to-registry
container_name: docker-image-sync-to-registry
privileged: true
environment:
- REGISTRY_URL=http://registry:5000 # 镜像仓库地址
- CRON_SCHEDULE=0 4 * * * # 每天凌晨4点执行
- SYNC_ON_START=true # 容器启动时立即同步
- TARGET_ARCH=linux/amd64 # 目标架构(linux/amd64,linux/arm64)
- REMOVE_LIBRARY_PREFIX_ON_LOCAL=true # 是否移除本地镜像的library/前缀
- MAX_PAGES_PER_CATEGORY=1 # 控制 Python 脚本爬取的页数
- CRAWL_AFTER_CUSTOM_IMAGES=true # 拉取custom_images镜像列表之后是否继续爬取DockerHub
- HTTP_PROXY=http://192.168.1.100:7890
- HTTPS_PROXY=http://192.168.1.100:7890
- NO_PROXY=localhost,127.0.0.1,docker.1panel.live,docker.1ms.run,http://registry:5000
volumes:
- /etc/timezone:/etc/timezone:ro # 容器时区同步宿主机
- /etc/localtime:/etc/localtime:ro # 容器时间同步宿主机
- /vol1/1000/Docker/docker-image-sync-to-registry/daemon.json:/etc/docker/daemon.json # 设置容器Docker加速源
- /vol3/1000/Docker镜像仓库/docker缓存:/var/lib/docker/overlay2 # 挂载容器Docker下载镜像的目录
- /vol1/1000/Docker/docker-image-sync-to-registry/custom_images.txt:/app/custom_images.txt:ro # 自定义镜像列表文件
networks:
- registry
networks:
registry:
name: registry
- Daemon.json配置
{
"registry-mirrors": ["https://docker.1panel.live", "https://docker.1ms.run"],
"insecure-registries": ["[镜像仓库地址]"]
}
- 参数信息
- 挂载卷说明
项目结构
.
├── Dockerfile # Docker 镜像构建文件
├── docker-compose.yml # Docker Compose 配置文件
├── daemon.json # Docker daemon 配置文件
├── config.yml # Registry UI 配置文件
├── docker_hub_crawler.py # Docker Hub 爬虫脚本
└── sync_images.sh # 镜像同步脚本
工作原理
- 爬虫模块(docker_hub_crawler.py):
- 爬取 Docker Hub 上的镜像分类
- 提取镜像名称和标签信息
- 支持分页获取和去重处理
- 同步模块(sync_images.sh):
- 读取 custom_images.txt 中的镜像列表
- 读取爬虫生成的镜像列表
- 使用 docker pull 拉取镜像
- 使用 docker tag 重命名镜像
- 使用 docker push 推送到私有仓库
查看日志:
# 查看容器日志
docker logs docker-image-sync-to-registry
# 查看同步脚本日志
docker exec docker-image-sync-to-registry cat /var/log/sync_images.log
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...