diff --git a/cluster/engine.go b/cluster/engine.go index 20abb306d4..4d587025c0 100644 --- a/cluster/engine.go +++ b/cluster/engine.go @@ -991,12 +991,20 @@ func (e *Engine) Pull(image string, authConfig *types.AuthConfig) error { dec := json.NewDecoder(pullResponse) for { m := map[string]interface{}{} - if err := dec.Decode(&m); err != nil { + err := dec.Decode(&m) + if err != nil { if err == io.EOF { break } return err } + // if the stream contains an error, return it + if val, ok := m["error"]; ok { + if errmsg, strok := val.(string); strok { + return errors.New(errmsg) + } + return errors.New("Error while downloading image") + } } // force refresh images