diff --git a/api.go b/api.go index 24b6b7e4bf..0a7f7abea7 100644 --- a/api.go +++ b/api.go @@ -560,14 +560,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r if err := job.DecodeEnv(r.Body); err != nil { return err } - resolvConf, err := utils.GetResolvConf() - if err != nil { - return err - } - if !job.GetenvBool("NetworkDisabled") && len(job.Getenv("Dns")) == 0 && len(srv.runtime.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) { - out.Warnings = append(out.Warnings, fmt.Sprintf("Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns)) - job.SetenvList("Dns", defaultDns) - } // Read container ID from the first line of stdout job.Stdout.AddString(&out.ID) // Read warnings from stderr @@ -581,20 +573,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r for scanner.Scan() { out.Warnings = append(out.Warnings, scanner.Text()) } - if job.GetenvInt("Memory") > 0 && !srv.runtime.sysInfo.MemoryLimit { - log.Println("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.") - out.Warnings = append(out.Warnings, "Your kernel does not support memory limit capabilities. Limitation discarded.") - } - if job.GetenvInt("Memory") > 0 && !srv.runtime.sysInfo.SwapLimit { - log.Println("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.") - out.Warnings = append(out.Warnings, "Your kernel does not support memory swap capabilities. Limitation discarded.") - } - - if !job.GetenvBool("NetworkDisabled") && srv.runtime.sysInfo.IPv4ForwardingDisabled { - log.Println("Warning: IPv4 forwarding is disabled.") - out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.") - } - return writeJSON(w, http.StatusCreated, out) } diff --git a/server.go b/server.go index 87bab9ec5c..53cd4acc25 100644 --- a/server.go +++ b/server.go @@ -1753,11 +1753,23 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status { return engine.StatusErr } if config.Memory > 0 && !srv.runtime.sysInfo.MemoryLimit { + job.Errorf("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.\n") config.Memory = 0 } if config.Memory > 0 && !srv.runtime.sysInfo.SwapLimit { + job.Errorf("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.\n") config.MemorySwap = -1 } + resolvConf, err := utils.GetResolvConf() + if err != nil { + job.Error(err) + return engine.StatusErr + } + if !config.NetworkDisabled && len(config.Dns) == 0 && len(srv.runtime.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) { + job.Errorf("WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: %v\n", defaultDns) + config.Dns = defaultDns + } + container, buildWarnings, err := srv.runtime.Create(&config, name) if err != nil { if srv.runtime.graph.IsNotExist(err) { @@ -1771,6 +1783,9 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status { job.Error(err) return engine.StatusErr } + if !container.Config.NetworkDisabled && srv.runtime.sysInfo.IPv4ForwardingDisabled { + job.Errorf("WARNING: IPv4 forwarding is disabled.\n") + } srv.LogEvent("create", container.ID, srv.runtime.repositories.ImageName(container.Image)) // FIXME: this is necessary because runtime.Create might return a nil container // with a non-nil error. This should not happen! Once it's fixed we