瀏覽代碼

Improve error for docker exec & LXC

Signed-off-by: Victor Vieux <vieux@docker.com>
Victor Vieux 10 年之前
父節點
當前提交
ab30e19b96
共有 2 個文件被更改,包括 10 次插入1 次删除
  1. 6 0
      daemon/exec.go
  2. 4 1
      daemon/execdriver/lxc/driver.go

+ 6 - 0
daemon/exec.go

@@ -6,9 +6,11 @@ import (
 	"fmt"
 	"fmt"
 	"io"
 	"io"
 	"io/ioutil"
 	"io/ioutil"
+	"strings"
 	"sync"
 	"sync"
 
 
 	"github.com/docker/docker/daemon/execdriver"
 	"github.com/docker/docker/daemon/execdriver"
+	"github.com/docker/docker/daemon/execdriver/lxc"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/engine"
 	"github.com/docker/docker/pkg/broadcastwriter"
 	"github.com/docker/docker/pkg/broadcastwriter"
 	"github.com/docker/docker/pkg/ioutils"
 	"github.com/docker/docker/pkg/ioutils"
@@ -103,6 +105,10 @@ func (d *Daemon) ContainerExecCreate(job *engine.Job) engine.Status {
 		return job.Errorf("Usage: %s [options] container command [args]", job.Name)
 		return job.Errorf("Usage: %s [options] container command [args]", job.Name)
 	}
 	}
 
 
+	if strings.HasPrefix(d.execDriver.Name(), lxc.DriverName) {
+		return job.Error(lxc.ErrExec)
+	}
+
 	var name = job.Args[0]
 	var name = job.Args[0]
 
 
 	container, err := d.getActiveContainer(name)
 	container, err := d.getActiveContainer(name)

+ 4 - 1
daemon/execdriver/lxc/driver.go

@@ -2,6 +2,7 @@ package lxc
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"fmt"
 	"io"
 	"io"
 	"io/ioutil"
 	"io/ioutil"
@@ -27,6 +28,8 @@ import (
 
 
 const DriverName = "lxc"
 const DriverName = "lxc"
 
 
+var ErrExec = errors.New("Unsupported: Exec is not supported by the lxc driver")
+
 type driver struct {
 type driver struct {
 	root       string // root path for the driver to use
 	root       string // root path for the driver to use
 	initPath   string
 	initPath   string
@@ -529,5 +532,5 @@ func (t *TtyConsole) Close() error {
 }
 }
 
 
 func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver.ProcessConfig, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (int, error) {
 func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver.ProcessConfig, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (int, error) {
-	return -1, fmt.Errorf("Unsupported: Exec is not supported by the lxc driver")
+	return -1, ErrExec
 }
 }