registry: Do not push to mirrors
This patch splits LookupEndpoints into LookupPullEndpoints and LookupPushEndpoints so that mirrors added with --registry-mirror are skipped in the list returned by LookupPushEndpoints. Fixes https://github.com/docker/distribution/issues/823 Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
86a3ea91b8
commit
a7eb16ad1c
@ -109,27 +109,40 @@ func (s *Service) tlsConfigForMirror(mirror string) (*tls.Config, error) {
|
|||||||
return s.TLSConfig(mirrorURL.Host)
|
return s.TLSConfig(mirrorURL.Host)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupEndpoints creates an list of endpoints to try, in order of preference.
|
// LookupPullEndpoints creates an list of endpoints to try to pull from, in order of preference.
|
||||||
// It gives preference to v2 endpoints over v1, mirrors over the actual
|
// It gives preference to v2 endpoints over v1, mirrors over the actual
|
||||||
// registry, and HTTPS over plain HTTP.
|
// registry, and HTTPS over plain HTTP.
|
||||||
func (s *Service) LookupEndpoints(repoName string) (endpoints []APIEndpoint, err error) {
|
func (s *Service) LookupPullEndpoints(repoName string) (endpoints []APIEndpoint, err error) {
|
||||||
|
return s.lookupEndpoints(repoName, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LookupPushEndpoints creates an list of endpoints to try to push to, in order of preference.
|
||||||
|
// It gives preference to v2 endpoints over v1, and HTTPS over plain HTTP.
|
||||||
|
// Mirrors are not included.
|
||||||
|
func (s *Service) LookupPushEndpoints(repoName string) (endpoints []APIEndpoint, err error) {
|
||||||
|
return s.lookupEndpoints(repoName, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Service) lookupEndpoints(repoName string, isPush bool) (endpoints []APIEndpoint, err error) {
|
||||||
var cfg = tlsconfig.ServerDefault
|
var cfg = tlsconfig.ServerDefault
|
||||||
tlsConfig := &cfg
|
tlsConfig := &cfg
|
||||||
if strings.HasPrefix(repoName, DefaultNamespace+"/") {
|
if strings.HasPrefix(repoName, DefaultNamespace+"/") {
|
||||||
// v2 mirrors
|
if !isPush {
|
||||||
for _, mirror := range s.Config.Mirrors {
|
// v2 mirrors for pull only
|
||||||
mirrorTLSConfig, err := s.tlsConfigForMirror(mirror)
|
for _, mirror := range s.Config.Mirrors {
|
||||||
if err != nil {
|
mirrorTLSConfig, err := s.tlsConfigForMirror(mirror)
|
||||||
return nil, err
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
endpoints = append(endpoints, APIEndpoint{
|
||||||
|
URL: mirror,
|
||||||
|
// guess mirrors are v2
|
||||||
|
Version: APIVersion2,
|
||||||
|
Mirror: true,
|
||||||
|
TrimHostname: true,
|
||||||
|
TLSConfig: mirrorTLSConfig,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
endpoints = append(endpoints, APIEndpoint{
|
|
||||||
URL: mirror,
|
|
||||||
// guess mirrors are v2
|
|
||||||
Version: APIVersion2,
|
|
||||||
Mirror: true,
|
|
||||||
TrimHostname: true,
|
|
||||||
TLSConfig: mirrorTLSConfig,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
// v2 registry
|
// v2 registry
|
||||||
endpoints = append(endpoints, APIEndpoint{
|
endpoints = append(endpoints, APIEndpoint{
|
||||||
|
Loading…
Reference in New Issue
Block a user