diff --git a/pkg/compose/create.go b/pkg/compose/create.go index 34e728eb4..8069520a6 100644 --- a/pkg/compose/create.go +++ b/pkg/compose/create.go @@ -1041,7 +1041,14 @@ func (s *composeService) ensureNetwork(ctx context.Context, n types.NetworkConfi if err != nil { return err } - if len(networks) == 0 { + networkNotFound := true + for _, net := range networks { + if net.Name == n.Name { + networkNotFound = false + break + } + } + if networkNotFound { if n.External.External { if n.Driver == "overlay" { // Swarm nodes do not register overlay networks that were diff --git a/pkg/compose/down.go b/pkg/compose/down.go index b04ac1087..1ea7b4dcb 100644 --- a/pkg/compose/down.go +++ b/pkg/compose/down.go @@ -163,14 +163,16 @@ func (s *composeService) removeNetwork(ctx context.Context, name string, w progr var removed int for _, net := range networks { - if err := s.apiClient().NetworkRemove(ctx, net.ID); err != nil { - if errdefs.IsNotFound(err) { - continue + if net.Name == name { + if err := s.apiClient().NetworkRemove(ctx, net.ID); err != nil { + if errdefs.IsNotFound(err) { + continue + } + w.Event(progress.ErrorEvent(eventName)) + return errors.Wrapf(err, fmt.Sprintf("failed to remove network %s", name)) } - w.Event(progress.ErrorEvent(eventName)) - return errors.Wrapf(err, fmt.Sprintf("failed to remove network %s", name)) + removed++ } - removed++ } if removed == 0 {