diff --git a/daemon/daemon.go b/daemon/daemon.go index a3c307ddad..98457ef1a4 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -367,6 +367,16 @@ func (daemon *Daemon) restore() error { registeredContainers = append(registeredContainers, container) } + // Restore networking of registered containers. + // This must be performed prior to any IP allocation, otherwise we might + // end up giving away an already allocated address. + for _, container := range registeredContainers { + if err := container.RestoreNetwork(); err != nil { + log.Errorf("Failed to restore network for %v: %v", container.Name, err) + continue + } + } + // check the restart policy on the containers and restart any container with // the restart policy of "always" if daemon.config.AutoRestart {