فهرست منبع

'docker pull' will download images from a public mirror by default

Solomon Hykes 12 سال پیش
والد
کامیت
3cfac8f335
1فایلهای تغییر یافته به همراه17 افزوده شده و 2 حذف شده
  1. 17 2
      dockerd/dockerd.go

+ 17 - 2
dockerd/dockerd.go

@@ -19,6 +19,8 @@ import (
 	"encoding/json"
 	"bytes"
 	"sync"
+	"net/url"
+	"path"
 )
 
 const VERSION = "0.0.1"
@@ -307,11 +309,24 @@ func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string
 	if name == "" {
 		return errors.New("Not enough arguments")
 	}
-	resp, err := http.Get(args[0])
+	u, err := url.Parse(name)
 	if err != nil {
 		return err
 	}
-	img, err := srv.images.Import(args[0], resp.Body, stdout, nil)
+	if u.Scheme == "" {
+		u.Scheme = "http"
+	}
+	// FIXME: hardcode a mirror URL that does not depend on a single provider.
+	if u.Host == "" {
+		u.Host = "s3.amazonaws.com"
+		u.Path = path.Join("/docker.io/images", u.Path)
+	}
+	fmt.Fprintf(stdout, "Downloading %s from %s...\n", name, u.String())
+	resp, err := http.Get(u.String())
+	if err != nil {
+		return err
+	}
+	img, err := srv.images.Import(name, resp.Body, stdout, nil, compression)
 	if err != nil {
 		return err
 	}