Respect ALL_PROXY during registry operations
Use sockets.DialerFromEnvironment, as is done in other places, to transparently support SOCKS proxy config from ALL_PROXY environment variable. Requires the *engine* have the ALL_PROXY env var set, which doesn't seem ideal. Maybe it should be a CLI option somehow? Only tested with push and a v2 registry so far. I'm happy to look further into testing more broadly, but I wanted to get feedback on the general idea first. Signed-off-by: Brett Higgins <brhiggins@arbor.net>master
							parent
							
								
									56480ce80a
								
							
						
					
					
						commit
						c4778ea1be
					
				|  | @ -16,6 +16,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/Sirupsen/logrus" | ||||
| 	"github.com/docker/distribution/registry/client/transport" | ||||
| 	"github.com/docker/go-connections/sockets" | ||||
| 	"github.com/docker/go-connections/tlsconfig" | ||||
| ) | ||||
| 
 | ||||
|  | @ -165,16 +166,25 @@ func NewTransport(tlsConfig *tls.Config) *http.Transport { | |||
| 		var cfg = tlsconfig.ServerDefault | ||||
| 		tlsConfig = &cfg | ||||
| 	} | ||||
| 	return &http.Transport{ | ||||
| 		Proxy: http.ProxyFromEnvironment, | ||||
| 		Dial: (&net.Dialer{ | ||||
| 			Timeout:   30 * time.Second, | ||||
| 			KeepAlive: 30 * time.Second, | ||||
| 			DualStack: true, | ||||
| 		}).Dial, | ||||
| 
 | ||||
| 	direct := &net.Dialer{ | ||||
| 		Timeout:   30 * time.Second, | ||||
| 		KeepAlive: 30 * time.Second, | ||||
| 		DualStack: true, | ||||
| 	} | ||||
| 
 | ||||
| 	base := &http.Transport{ | ||||
| 		Proxy:               http.ProxyFromEnvironment, | ||||
| 		Dial:                direct.Dial, | ||||
| 		TLSHandshakeTimeout: 10 * time.Second, | ||||
| 		TLSClientConfig:     tlsConfig, | ||||
| 		// TODO(dmcgowan): Call close idle connections when complete and use keep alive
 | ||||
| 		DisableKeepAlives: true, | ||||
| 	} | ||||
| 
 | ||||
| 	proxyDialer, err := sockets.DialerFromEnvironment(direct) | ||||
| 	if err == nil { | ||||
| 		base.Dial = proxyDialer.Dial | ||||
| 	} | ||||
| 	return base | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue