From d9a1c3f9e474646b13abf6929c75ea6701eb5a02 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Sat, 4 Apr 2020 14:09:35 +0800 Subject: [PATCH] bugfix: add default host config if not set If there is not specific host config, like ctr does, the resolver will fail to get host path. And this patch is to add default host config if needs. And default config host config should have all caps for pull and push. Signed-off-by: Wei Fu --- remotes/docker/config/hosts.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/remotes/docker/config/hosts.go b/remotes/docker/config/hosts.go index b9736cafb..f93fd1b02 100644 --- a/remotes/docker/config/hosts.go +++ b/remotes/docker/config/hosts.go @@ -88,21 +88,20 @@ func ConfigureHosts(ctx context.Context, options HostOptions) docker.RegistryHos if hosts == nil { hosts = make([]hostConfig, 1) } - if len(hosts) > 1 { - if hosts[len(hosts)-1].host == "" { - if host == "docker.io" { - hosts[len(hosts)-1].scheme = "https" - hosts[len(hosts)-1].host = "https://registry-1.docker.io" + if len(hosts) >= 1 && hosts[len(hosts)-1].host == "" { + if host == "docker.io" { + hosts[len(hosts)-1].scheme = "https" + hosts[len(hosts)-1].host = "registry-1.docker.io" + } else { + hosts[len(hosts)-1].host = host + if options.DefaultScheme != "" { + hosts[len(hosts)-1].scheme = options.DefaultScheme } else { - hosts[len(hosts)-1].host = host - if options.DefaultScheme != "" { - hosts[len(hosts)-1].scheme = options.DefaultScheme - } else { - hosts[len(hosts)-1].scheme = "https" - } + hosts[len(hosts)-1].scheme = "https" } - hosts[len(hosts)-1].path = "/v2" } + hosts[len(hosts)-1].path = "/v2" + hosts[len(hosts)-1].capabilities = docker.HostCapabilityPull | docker.HostCapabilityResolve | docker.HostCapabilityPush } defaultTransport := &http.Transport{