• Stars
    star
    135
  • Rank 261,695 (Top 6 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Docker image sync tool.

imgsync

imgsync

A docker image sync tool.

Registry Address Docker Hub Status
Flannel quay.io/coreos/flannel gcrxio/quay.io_coreos_flannel Build Status
kubeadm k8s.gcr.io gcrxio/k8s.gcr.io_* Build Status
Helm gcr.io/kubernetes-helm gcrxio/gcr.io_kubernetes-helm_* Build Status
Istio gcr.io/istio-release gcrxio/gcr.io_istio-release_* Build Status
Linkerd gcr.io/linkerd-io gcrxio/gcr.io_linkerd-io_* Build Status
Spinnaker gcr.io/spinnaker-marketplace gcrxio/gcr.io_spinnaker-marketplace_* Build Status
Distroless gcr.io/distroless gcrxio/gcr.io_distroless_* Build Status
Samples gcr.io/google-samples gcrxio/gcr.io_google-samples_* Build Status
KNative gcr.io/knative-releases gcrxio/gcr.io_knative-releases_* Build Status

如何快速拉取 kubeadm 镜像?

for img in `kubeadm config images list`; do
    docker pull "gcrxio/$(echo $img | tr '/' '_')" && docker tag "gcrxio/$(echo $img | tr '/' '_')" $img;
done

特性

  • 不依赖 Docker 运行
  • 基于 Manifests 同步
  • 支持 Fat Manifests 镜像同步
  • Manifests 文件本地 Cache,按需同步
  • 同步期间不占用本地磁盘空间(直接通过标准库转发镜像)
  • 可控的并发同步(优雅关闭/可调节并发数量)
  • 按批次同步,支持同步指定区间段镜像
  • 支持多仓库同步(后续仓库增加请提交 issue)
  • 支持生成同步报告,同步报告推送 Telegram

安装

工具采用 go 编写,安装可直接从 release 页下载对应平台二进制文件,并增加可执行权限运行既可

wget https://github.com/mritd/imgsync/releases/download/v2.0.0/imgsync_linux_amd64
chmod +x imgsync_linux_amd64
./imgsync_linux_amd64 --help

编译

如果预编译不包含您的平台架构,可以自行编译本工具,本工具编译依赖如下

  • make
  • git
  • Go 1.14.2+

编译时直接运行 make bin 命令既可,如需交叉编译请安装 gox 工具并执行 make 命令既可

使用

Docker image sync tool.

Usage:
  imgsync [flags]
  imgsync [command]

Available Commands:
  flannel     Sync flannel images
  gcr         Sync gcr images
  help        Help about any command
  sync        Sync single image

Flags:
      --debug     debug mode
  -h, --help      help for imgsync
  -v, --version   version for imgsync

Use "imgsync [command] --help" for more information about a command..

sync

sync 子命令用于同步单个镜像,一般用于测试目的进行同步并查看相关日志

gcr

gcr 子命令用户同步 gcr.io 相关镜像,如果使用 --kubeadm 选项则同步 k8s.gcr.io 镜像

flannel

flannel 子命令用于同步 quay.io 的 flannel 镜像

推荐配置

由于工具会开启并发同步,且不经过 Docker,不进行本地缓存,所以本工具推荐的最低运行配置如下:

  • 4 核心 8G 内存 vps
  • 至少 100/M 对等的带宽接口
  • Ubuntu 18.04+ 系统环境
  • 磁盘至少保留 2G 可用空间(manifests 本地缓存需要用到一定空间)

本工具默认 20 并发进行同步处理,且每次同步针对每个镜像 tag 至少发出一次 manifest 请求; 这意味着当前(在本文档编写时)每次全部仓库同步至少发出 100083 个 manifests 请求以及其他试图 获取镜像名称列表、tag 列表的请求,在高并发下这需要服务器有足够的 CPU 和带宽能力;内存占用方面 目前还可以接受,主要内存消耗在启动时加载 manifests 配置文件并反序列化到内存 map,这期间大约 需要花费最高 10s 的时间(434M json 文件)。

镜像名称

工具默认会转换原镜像名称,转换规则为将原镜像名称内的 / 全部替换为 _,例如(假设 Docker Hub 用户名为 gcrxio):

gcr.io/istio-release/pilot:latest ==> gcrxio/gcr.io_istio-release_pilot:latest

国内 Docker Hub Mirror

  • Aliyun: [系统分配前缀].mirror.aliyuncs.com
  • Tencent: https://mirror.ccs.tencentyun.com
  • 163: http://hub-mirror.c.163.com
  • Azure: dockerhub.azk8s.cn

其他说明

工具目前仅支持同步到 Docker Hub,且以后没有同步到其他仓库打算。同步 Docker Hub 时默认会同步到 --user 指定的用户下;本工具默认已经将支持的仓库同步到 Docker Hub gcrxio 用户下; 其他更细节使用请自行通过 --help 查看以及参考本项目 Travis CI 配置文件。 项目目录下的 Github Action 配置已经停用(性能不行),没删除是因为调了好久删了可惜,以后备用吧。

More Repositories

1

dockerfile

some personally made dockerfile
HTML
2,070
star
2

mmh

Nothing, just a simple ssh tool.
Go
325
star
3

tpclash

Transparent proxy tool for Clash
Go
220
star
4

gitflow-toolkit

A simple toolkit for GitFlow.
Go
215
star
5

idgen

一个使用 golang 编写的大陆身份证生成器
Go
183
star
6

docker-library

kubernetes 相关 images 同步
Dockerfile
127
star
7

shell_scripts

常用的一些 shell 脚本
Shell
125
star
8

composes

常用的 docker-compose 文件
Smarty
110
star
9

gcr

Google container registry sync repo
107
star
10

rime

Rime config
88
star
11

bubbles

TUI components for Bubble Tea(Similar to the official bubbles 😊)
Go
82
star
12

ginmvc

Gin mvc template
Go
53
star
13

goadmission

Go
33
star
14

koolshare-gdddns

koolshare 固件 Godaddy ddns 插件
ASP
32
star
15

ktool

Shell
28
star
16

autobuild

Earthly Auto Build Repo
Earthly
25
star
17

mritd.me

十字路口,繁华街头......
HTML
22
star
18

chinaid

China ID card and other information generation library(中国大陆身份证号等信息生成库)
Go
16
star
19

wol

A simple WOL tool(一个简单地命令行 WOL 工具)
Go
16
star
20

s2h

A simple tool to convert socket5 proxy protocol to http proxy protocol
Go
13
star
21

touchid

macOS touchid authentication library
Go
9
star
22

promptx

A simple terminal prompt library
Go
9
star
23

swns

A simple plugin for kubectl to switch current context namespace.
Go
7
star
24

SSLCertTool

一个用于生成 Java SSL 信任文件的小工具,用于将指定地址 SSL 证书加入到 Java 信任列表中
Java
6
star
25

pre-receive

A simple gitlab commit message check hook.
Go
6
star
26

etcd-pack

build the deb package for etcd.
Shell
6
star
27

ddns

一个 go 编写的简单地 DDNS 工具, 目前支持 gandi、godaddy、namecom.
Go
6
star
28

consul-rpm

consul rpm
Shell
6
star
29

manjaro-rpi4

build manjaro system img for rpi4
Shell
5
star
30

poetbot

Telegram auto change name bot.
Go
5
star
31

init

Shell
5
star
32

tgsend

一个 Telegram 推送的小工具,用于调用 Bot API 发送告警等
Go
5
star
33

csi-archetype

kubernetes csi archetype
Go
5
star
34

ttsoft-gdddns

Koolshare Tomato 固件软件中心 Godaddy DDNS 插件
Shell
4
star
35

GitLabCI-TestProject

GitLabCI-TestProject
Java
4
star
36

crxdl

A simple chrome crx download tool
JavaScript
3
star
37

mritd.com

这是个人博客的已发布静态文件仓库
HTML
3
star
38

kube-apiserver-proxy-pack

kubernetes api server proxy tool
Shell
3
star
39

cfssl-pack

The cfssl installation package is built by makeself.
Shell
3
star
40

sshutils

ssh utils
Go
3
star
41

kubeadm-config-pack

kubeadm config
Shell
3
star
42

pd

一个简单的 Parallels Desktop 命令行的包装工具
Go
3
star
43

kubeadm-config

kubeadm config for set up Kubernetes HA cluster
Makefile
3
star
44

dnsacme

Simple tool to manage ACME Cert(Only Supported DNS-01)
Go
2
star
45

aidlock

Go
2
star
46

aidunlock

Go
2
star
47

SpringBootGracefulShutdownExample

Java
2
star
48

etcdhosts-client

Client for coredns etcdhosts plugin
Go
2
star
49

httpcmd

Run local commands via http
Go
2
star
50

caddybuilder

A simple build tool for caddy
Go
2
star
51

sgdict

搜狗词库自动抓取并转换 RIME 格式工具
Go
2
star
52

logger

Go
1
star
53

kubectl-plugins

kubectl custom plugins
Shell
1
star
54

bandwagonmon

Go
1
star
55

certmonitor

A simple website certificate monitor tool.
Go
1
star
56

mmh-otp

simple otp command line tool
Go
1
star
57

linux-rpi4

rpi4 kernel
Shell
1
star
58

httpprint

simple http request print tool
Go
1
star
59

DDNS_Tool

基于域名服务商的 DDNS 工具
Java
1
star
60

toq

😂😂😂
1
star
61

kubetool

Kubernetes toolkit.
Go
1
star
62

trojan-kubernetes

Kubernetes configuration templates for deploying trojan to a Kubernetes cluster.
1
star
63

socket2tcp

A simple tool for socket forwarding to remote tcp address
Go
1
star
64

dnsbot

Telegram Bot for etcdhosts
Go
1
star