Skip to content

YoweTeam/CrawlDockerImageTag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CrawlDockerImageTag

抓取Docker Hub官方镜像标签,依赖官方的API接口:https://hub.docker.com/

English language, Please Click: English

更多其他内容,关注本人博客:https://www.yowe.net

案例一:仅拉取官方的镜像分类

	defer log.Sync()
	if err := log.Init(&log.LogSettings{
		Level:       config.GetStringOrDefault("log.level", log.DefaultLevel),
		Path:        config.GetStringOrDefault("log.path", log.DefaultPath),
		FileName:    config.GetStringOrDefault("log.filename", log.DefaultFileName),
		CataLog:     config.GetStringOrDefault("log.catalog", log.DefaultCataLog),
		MaxFileSize: config.GetIntOrDefault("log.maxfilesize", log.DefaultMaxFileSize),
		MaxBackups:  config.GetIntOrDefault("log.maxbackups", log.DefaultMaxBackups),
		MaxAge:      config.GetIntOrDefault("log.maxage", log.DefaultMaxAge),
		Caller:      config.GetBoolOrDefault("log.caller", log.DefaultCaller),
	}); err != nil {
		panic(err)
	}

	// config set for http request proxy
	viper.Set(constant.HTTP_PROXY_KEY, "http://127.0.0.1:1080")

	// create context
	ctx := contextBase.NewBackgroundContext()
	crawlSrv := crawl.NewCrawlLogic()

	// get category data
	categories, err := crawlSrv.GetImageCategoryData(ctx)
	if err != nil {
		log.WithContext(ctx).Errorf("GetOfficialImageList err: %v", err)
		return
	}
	categoriesStr, _ := json.Marshal(categories)
	fmt.Println("image categories:")
	fmt.Println(string(categoriesStr))

案例二:拉取指定镜像分类下的镜像标签

	defer log.Sync()
	if err := log.Init(&log.LogSettings{
		Level:       config.GetStringOrDefault("log.level", log.DefaultLevel),
		Path:        config.GetStringOrDefault("log.path", log.DefaultPath),
		FileName:    config.GetStringOrDefault("log.filename", log.DefaultFileName),
		CataLog:     config.GetStringOrDefault("log.catalog", log.DefaultCataLog),
		MaxFileSize: config.GetIntOrDefault("log.maxfilesize", log.DefaultMaxFileSize),
		MaxBackups:  config.GetIntOrDefault("log.maxbackups", log.DefaultMaxBackups),
		MaxAge:      config.GetIntOrDefault("log.maxage", log.DefaultMaxAge),
		Caller:      config.GetBoolOrDefault("log.caller", log.DefaultCaller),
	}); err != nil {
		panic(err)
	}

	// config set for http request proxy
	viper.Set(constant.HTTP_PROXY_KEY, "http://127.0.0.1:1080")

	// set the page size for each request
	sizePage := 25

	// specified category param
	req := dto.SearchRequest{
		Categories: "Web Servers",
		Size:       fmt.Sprintf("%d", sizePage),
	}

	// official image param
	req := dto.SearchRequest{
		OpenSource: "false",
		Official:   "true",
		Size:       fmt.Sprintf("%d", sizePage),
	}

	imageTags, retryPages, err := crawlSrv.GetOfficialImageList(ctx, req, 5)
	if err != nil {
		log.WithContext(ctx).Errorf("GetOfficialImageList err: %v", err)
		return
	}
	sort.Strings(imageTags)
	tagStr, _ := json.Marshal(imageTags)
	sort.Ints(retryPages)
	retryPageStr, _ := json.Marshal(retryPages)
	fmt.Println("image tags:")
	fmt.Println(string(tagStr))
	fmt.Println("request failure page:")
	fmt.Println(string(retryPageStr))

案例三:拉取官方镜像分类下的镜像标签

	defer log.Sync()
	if err := log.Init(&log.LogSettings{
		Level:       config.GetStringOrDefault("log.level", log.DefaultLevel),
		Path:        config.GetStringOrDefault("log.path", log.DefaultPath),
		FileName:    config.GetStringOrDefault("log.filename", log.DefaultFileName),
		CataLog:     config.GetStringOrDefault("log.catalog", log.DefaultCataLog),
		MaxFileSize: config.GetIntOrDefault("log.maxfilesize", log.DefaultMaxFileSize),
		MaxBackups:  config.GetIntOrDefault("log.maxbackups", log.DefaultMaxBackups),
		MaxAge:      config.GetIntOrDefault("log.maxage", log.DefaultMaxAge),
		Caller:      config.GetBoolOrDefault("log.caller", log.DefaultCaller),
	}); err != nil {
		panic(err)
	}

	// config set for http request proxy
	viper.Set(constant.HTTP_PROXY_KEY, "http://127.0.0.1:1080")

	// set the page size for each request
	sizePage := 25

	// official image param
	req := dto.SearchRequest{
		OpenSource: "false",
		Official:   "true",
		Size:       fmt.Sprintf("%d", sizePage),
	}

	imageTags, retryPages, err := crawlSrv.GetOfficialImageList(ctx, req, 5)
	if err != nil {
		log.WithContext(ctx).Errorf("GetOfficialImageList err: %v", err)
		return
	}
	sort.Strings(imageTags)
	tagStr, _ := json.Marshal(imageTags)
	sort.Ints(retryPages)
	retryPageStr, _ := json.Marshal(retryPages)
	fmt.Println("image tags:")
	fmt.Println(string(tagStr))
	fmt.Println("request failure page:")
	fmt.Println(string(retryPageStr))

Releases

No releases published

Packages

No packages published

Languages