• Stars
    star
    159
  • Rank 235,916 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created about 6 years ago
  • Updated almost 2 years ago

Reviews

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

Repository Details

关于

可以去阿里云镜像仓库市场看看registry.aliyuncs.com/google_containers实际上这个ns是用户创建的。

由于这个ns的所有者同步太慢了,我便写了这个工具来时刻同步

本仓库只同步k8s.gcr.io ==> registry.aliyuncs.com/k8sxio,目前gcr.io/google_containers已经不和k8s.gcr.io一致了,所以目前只同步k8s.gcr.io

目前已经同步完了,可以看github action的运行状态

查看镜像列表的话去阿里云镜像仓库市场

登录后在搜索框那输入k8sxio/搜索即可,也可以看单独的镜像例如k8sxio/kube-apiserver

特性

  • 不依赖 Docker 运行

  • 同步期间不占用本地磁盘空间(直接通过标准库转发镜像)

  • 可控的并发同步(优雅关闭/可调节并发数量)

  • 核心拷贝方法引用的containers/image,部分代码借鉴了mritd

  • 利用 boltdb 存储每个镜像 manifest 信息的 crc32 校验值,通过比对判断是否需要同步,而不是每次请求目标仓库

  • 把 boltdb 文件放 docker镜像里存在 dockerhub 上,多次运行 action 来同步

用法

编译的话记得带上tag,关闭CGO

go build -tags=containers_image_openpgp main.go

sync命令是同步的命令,sum是查看boltdb文件的信息

imgsync sync --help
            
    Sync docker images.
    
    Usage:
      imgsync sync [flags]
    
    Flags:
          --addition-ns stringArray    addition ns to sync (default [])
          --command-timeout duration   timeout for the command execution.
          --db string                  the boltdb file (default "bolt.db")
      -h, --help                       help for sync
          --img-timeout duration       sync single image timeout. (default 15m0s)
          --live-interval duration     live output for travis-ci.
          --login-retry uint8          login retry when timeout. (default 2)
      -p, --password string            The password to push.
          --process-limit int          sync process limit. (default 2)
          --push-ns string             the ns push to
          --push-to string             the repo push to (default "docker.io")
          --query-limit int            http query limit. (default 10)
          --retry int                  retry count while err. (default 4)
          --retry-interval duration    retry interval while err. (default 4s)
      -u, --user string                The username to push.
    
    Global Flags:
          --debug   debug mode

示例

那里设置好环境变量来控制运行的一些属性,也可以把镜像同步到自己的内网仓库上

  ${HOME}/sync/imgsync sync 
  --db ${HOME}/sync/bolt.db 
  --push-to registry.aliyuncs.com 
  --password ${PASS} 
  --push-ns=k8sxio 
  --user [email protected] 
  --command-timeout ${TMOUT} 
  --process-limit ${PROCESS:=2}
  --img-timeout ${IMG_TMOUT:=10m} 
  --live-interval ${LIVE:=9m20s}
  --login-retry ${LOGIN_RETRY:=2}
  --debug=${DEBUG:=false} 

More Repositories

1

Kubernetes-ansible

🎄ansible多网卡机器上一键部署高可用Kubernetes(systemd)
Shell
430
star
2

docker-need-to-know

docker常见错误和必须要遵守的标准
357
star
3

gcr.io

🌀 sync the docker images of the gcr.io and quay.io
246
star
4

Installer

不进bios和阵列卡,不用外部工具也不用买出厂服务,只需要开机,物理服务器便批量自动做硬raid和安装系统以及设置各自的所有网络信息和设置
Go
168
star
5

Actions-OpenWrt

x86_64/r2s/r4s/树莓派4/doornet2/r1s-h5 openwrt 多源码固件在线编译
Shell
115
star
6

Dockerfile

🐳个人用改良市面上的不人性化或者不标准的Dockerfile
Dockerfile
99
star
7

harbor_exporter

prometheus exporter for harbor v1
Go
57
star
8

dp

a cli tool which could pull docker images without docker
Go
37
star
9

bash

😎记录我写的bash shell
Shell
34
star
10

docker-compose-aarch64

docker-compose v2 已经用 golang 重写了并提供不同架构文件,本仓库只编译 ^1\.\d{2}\.\d 的 tag
Shell
27
star
11

Kubernetes-ansible-base

剥离出Kubernetes-ansible各个版本公用的文件
19
star
12

ESP8266_NONOS_SDK-mqtt-uart_set

🎉esp-8266-mqtt
Assembly
16
star
13

docker-compose

📬放置所有用过的docker-compose文件
JavaScript
14
star
14

k8s-manual-files

10
star
15

quay.io

🌀 sync the docker images of the gcr.io and quay.io
Shell
8
star
16

dummy-tool

Linux dummy 接口工具,支持 x86_64/arm64/mips64le
Go
8
star
17

consul-tls-ansible

use ansible to Deploy the consul cluster which encrypted by tls
7
star
18

k8s_bin-docker_cp

利用docker下载k8s相关文件
Shell
4
star
19

compile-and-packages

Dockerfile
2
star
20

Image-Hosting

1
star
21

zhangguanzhang.github.io

HTML
1
star
22

my-client-go

use client-go write something
Go
1
star
23

ipFilter

Go
1
star