mirror of
https://github.com/clearlinux/docker.git
synced 2026-09-05 13:11:30 +00:00
Merge fix
This commit is contained in:
+12
-9
@@ -104,7 +104,7 @@ func (cli *DockerCli) CmdInsert(args ...string) error {
|
||||
v.Set("url", cmd.Arg(1))
|
||||
v.Set("path", cmd.Arg(2))
|
||||
|
||||
err := cli.hijack("POST", "/images/"+cmd.Arg(0)+"/insert?"+v.Encode(), false)
|
||||
err := cli.stream("POST", "/images/"+cmd.Arg(0)+"/insert?"+v.Encode(), nil, os.Stdout)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -587,7 +587,7 @@ func (cli *DockerCli) CmdImport(args ...string) error {
|
||||
v.Set("tag", tag)
|
||||
v.Set("fromSrc", src)
|
||||
|
||||
err := cli.hijack("POST", "/images/create?"+v.Encode(), false)
|
||||
err := cli.stream("POST", "/images/create?"+v.Encode(), os.Stdin, os.Stdout)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -644,7 +644,7 @@ func (cli *DockerCli) CmdPush(args ...string) error {
|
||||
|
||||
v := url.Values{}
|
||||
v.Set("registry", *registry)
|
||||
if err := cli.hijack("POST", "/images/"+name+"/push?"+v.Encode(), false); err != nil {
|
||||
if err := cli.stream("POST", "/images/"+name+"/push?"+v.Encode(), nil, os.Stdout); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@@ -675,7 +675,7 @@ func (cli *DockerCli) CmdPull(args ...string) error {
|
||||
v.Set("tag", *tag)
|
||||
v.Set("registry", *registry)
|
||||
|
||||
if err := cli.hijack("POST", "/images/create?"+v.Encode(), false); err != nil {
|
||||
if err := cli.stream("POST", "/images/create?"+v.Encode(), nil, os.Stdout); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -880,7 +880,7 @@ func (cli *DockerCli) CmdExport(args ...string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := cli.stream("GET", "/containers/"+cmd.Arg(0)+"/export"); err != nil {
|
||||
if err := cli.stream("GET", "/containers/"+cmd.Arg(0)+"/export", nil, os.Stdout); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@@ -1102,7 +1102,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
|
||||
if statusCode == 404 {
|
||||
v := url.Values{}
|
||||
v.Set("fromImage", config.Image)
|
||||
err = cli.hijack("POST", "/images/create?"+v.Encode(), false)
|
||||
err = cli.stream("POST", "/images/create?"+v.Encode(), nil, os.Stderr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1195,8 +1195,11 @@ func (cli *DockerCli) call(method, path string, data interface{}) ([]byte, int,
|
||||
return body, resp.StatusCode, nil
|
||||
}
|
||||
|
||||
func (cli *DockerCli) stream(method, path string) error {
|
||||
req, err := http.NewRequest(method, fmt.Sprintf("http://%s:%d%s", cli.host, cli.port, path), nil)
|
||||
func (cli *DockerCli) stream(method, path string, in io.Reader, out io.Writer) error {
|
||||
if (method == "POST" || method == "PUT") && in == nil {
|
||||
in = bytes.NewReader([]byte{})
|
||||
}
|
||||
req, err := http.NewRequest(method, fmt.Sprintf("http://%s:%d%s", cli.host, cli.port, path), in)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1220,7 +1223,7 @@ func (cli *DockerCli) stream(method, path string) error {
|
||||
return fmt.Errorf("error: %s", body)
|
||||
}
|
||||
|
||||
if _, err := io.Copy(os.Stdout, resp.Body); err != nil {
|
||||
if _, err := io.Copy(out, resp.Body); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user