|
@@ -417,10 +417,10 @@ func (daemon *Daemon) checkDeprecatedExpose(config *runconfig.Config) bool {
|
|
|
|
|
|
func (daemon *Daemon) mergeAndVerifyConfig(config *runconfig.Config, img *image.Image) ([]string, error) {
|
|
|
warnings := []string{}
|
|
|
- if daemon.checkDeprecatedExpose(img.Config) || daemon.checkDeprecatedExpose(config) {
|
|
|
+ if (img != nil && daemon.checkDeprecatedExpose(img.Config)) || daemon.checkDeprecatedExpose(config) {
|
|
|
warnings = append(warnings, "The mapping to public ports on your host via Dockerfile EXPOSE (host:port:port) has been deprecated. Use -p to publish the ports.")
|
|
|
}
|
|
|
- if img.Config != nil {
|
|
|
+ if img != nil && img.Config != nil {
|
|
|
if err := runconfig.Merge(config, img.Config); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
@@ -557,7 +557,7 @@ func parseSecurityOpt(container *Container, config *runconfig.HostConfig) error
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
-func (daemon *Daemon) newContainer(name string, config *runconfig.Config, img *image.Image) (*Container, error) {
|
|
|
+func (daemon *Daemon) newContainer(name string, config *runconfig.Config, imgID string) (*Container, error) {
|
|
|
var (
|
|
|
id string
|
|
|
err error
|
|
@@ -578,7 +578,7 @@ func (daemon *Daemon) newContainer(name string, config *runconfig.Config, img *i
|
|
|
Args: args, //FIXME: de-duplicate from config
|
|
|
Config: config,
|
|
|
hostConfig: &runconfig.HostConfig{},
|
|
|
- Image: img.ID, // Always use the resolved image id
|
|
|
+ ImageID: imgID,
|
|
|
NetworkSettings: &NetworkSettings{},
|
|
|
Name: name,
|
|
|
Driver: daemon.driver.String(),
|
|
@@ -590,14 +590,14 @@ func (daemon *Daemon) newContainer(name string, config *runconfig.Config, img *i
|
|
|
return container, err
|
|
|
}
|
|
|
|
|
|
-func (daemon *Daemon) createRootfs(container *Container, img *image.Image) error {
|
|
|
+func (daemon *Daemon) createRootfs(container *Container) error {
|
|
|
// Step 1: create the container directory.
|
|
|
// This doubles as a barrier to avoid race conditions.
|
|
|
if err := os.Mkdir(container.root, 0700); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
initID := fmt.Sprintf("%s-init", container.ID)
|
|
|
- if err := daemon.driver.Create(initID, img.ID); err != nil {
|
|
|
+ if err := daemon.driver.Create(initID, container.ImageID); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
initPath, err := daemon.driver.Get(initID, "")
|