diff --git a/daemon/container_operations.go b/daemon/container_operations.go index 3fd7d306266cb..652f347689a1a 100644 --- a/daemon/container_operations.go +++ b/daemon/container_operations.go @@ -967,10 +967,17 @@ func (daemon *Daemon) getNetworkedContainer(containerID, connectedContainerID st func (daemon *Daemon) releaseNetwork(container *container.Container) { start := time.Now() + // If live-restore is enabled, the daemon cleans up dead containers when it starts up. In that case, the + // netController hasn't been initialized yet and so we can't proceed. + // TODO(aker): If we hit this case, the endpoint state won't be cleaned up (ie. no call to cleanOperationalData). if daemon.netController == nil { return } - if container.HostConfig.NetworkMode.IsContainer() || container.Config.NetworkDisabled { + // If the container uses the network namespace of another container, it doesn't own it -- nothing to do here. + if container.HostConfig.NetworkMode.IsContainer() { + return + } + if container.NetworkSettings == nil { return }