github.com/Heebron/moby@v0.0.0-20221111184709-6eab4f55faf7/daemon/containerd/resolver.go (about) 1 package containerd 2 3 import ( 4 "github.com/containerd/containerd/remotes" 5 "github.com/containerd/containerd/remotes/docker" 6 registrytypes "github.com/docker/docker/api/types/registry" 7 "github.com/docker/docker/registry" 8 "github.com/sirupsen/logrus" 9 ) 10 11 func newResolverFromAuthConfig(authConfig *registrytypes.AuthConfig) remotes.Resolver { 12 opts := []docker.RegistryOpt{} 13 if authConfig != nil { 14 cfgHost := registry.ConvertToHostname(authConfig.ServerAddress) 15 if cfgHost == registry.IndexHostname { 16 cfgHost = registry.DefaultRegistryHost 17 } 18 authorizer := docker.NewDockerAuthorizer(docker.WithAuthCreds(func(host string) (string, string, error) { 19 if cfgHost != host { 20 logrus.WithField("host", host).WithField("cfgHost", cfgHost).Warn("Host doesn't match") 21 return "", "", nil 22 } 23 if authConfig.IdentityToken != "" { 24 return "", authConfig.IdentityToken, nil 25 } 26 return authConfig.Username, authConfig.Password, nil 27 })) 28 29 opts = append(opts, docker.WithAuthorizer(authorizer)) 30 } 31 32 return docker.NewResolver(docker.ResolverOptions{ 33 Hosts: docker.ConfigureDefaultRegistries(opts...), 34 }) 35 }