🔒 docker: Support basic auth for docker hub

This commit is contained in:
wmgit
2025-10-03 16:41:40 +08:00
parent 3f614e8011
commit 58097f865d
3 changed files with 21 additions and 3 deletions

View File

@@ -46,19 +46,24 @@ blackList = [
# 无认证: socks5://127.0.0.1:1080
# 有认证: socks5://username:password@127.0.0.1:1080
# 留空不使用代理
proxy = ""
proxy = ""
[download]
# 批量下载离线镜像数量限制
maxImages = 10
# Docker Hub 认证信息,留空则匿名拉取
[dockerHubAuth]
username = "" # e.g., user1
token = "" # e.g., dckr_pat_***
# Registry映射配置支持多种镜像仓库上游
[registries]
# GitHub Container Registry
[registries."ghcr.io"]
upstream = "ghcr.io"
authHost = "ghcr.io/token"
authHost = "ghcr.io/token"
authType = "github"
enabled = true

View File

@@ -48,6 +48,11 @@ type AppConfig struct {
MaxImages int `toml:"maxImages"`
} `toml:"download"`
DockerHubAuth struct {
Username string `toml:"username"`
Token string `toml:"token"`
} `toml:"dockerHubAuth"`
Registries map[string]RegistryMapping `toml:"registries"`
TokenCache struct {

View File

@@ -68,10 +68,18 @@ func InitDockerProxy() {
}
options := []remote.Option{
remote.WithAuth(authn.Anonymous),
remote.WithUserAgent("hubproxy/go-containerregistry"),
remote.WithTransport(utils.GetGlobalHTTPClient().Transport),
}
dockerHubAuth := config.GetConfig().DockerHubAuth
if dockerHubAuth.Token != "" && dockerHubAuth.Username != "" {
options = append(options, remote.WithAuth(&authn.Basic{
Username: dockerHubAuth.Username,
Password: dockerHubAuth.Token,
}))
} else {
options = append(options, remote.WithAuth(authn.Anonymous))
}
dockerProxy = &DockerProxy{
registry: registry,