# network prune Remove all unused networks ### Options | Name | Type | Default | Description | |:----------------------|:---------|:--------|:-------------------------------------------------| | [`--filter`](#filter) | `filter` | | Provide filter values (e.g. `until=`) | | `-f`, `--force` | `bool` | | Do not prompt for confirmation | ## Description Remove all unused networks. Unused networks are those which are not referenced by any containers. ## Examples ```console $ docker network prune WARNING! This will remove all custom networks not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Networks: n1 n2 ``` ### Filtering (--filter) The filtering flag (`--filter`) format is of "key=value". If there is more than one filter, then pass multiple flags (e.g., `--filter "foo=bar" --filter "bif=baz"`) The currently supported filters are: * until (``) - only remove networks created before given timestamp * label (`label=`, `label==`, `label!=`, or `label!==`) - only remove networks with (or without, in case `label!=...` is used) the specified labels. The `until` filter can be Unix timestamps, date formatted timestamps, or Go duration strings supported by [ParseDuration](https://pkg.go.dev/time#ParseDuration) (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. Supported formats for date formatted time stamps include RFC3339Nano, RFC3339, `2006-01-02T15:04:05`, `2006-01-02T15:04:05.999999999`, `2006-01-02T07:00`, and `2006-01-02`. The local timezone on the daemon will be used if you do not provide either a `Z` or a `+-00:00` timezone offset at the end of the timestamp. When providing Unix timestamps enter seconds[.nanoseconds], where seconds is the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (aka Unix epoch or Unix time), and the optional .nanoseconds field is a fraction of a second no more than nine digits long. The `label` filter accepts two formats. One is the `label=...` (`label=` or `label==`), which removes networks with the specified labels. The other format is the `label!=...` (`label!=` or `label!==`), which removes networks without the specified labels. The following removes networks created more than 5 minutes ago. Note that system networks such as `bridge`, `host`, and `none` will never be pruned: ```console $ docker network ls NETWORK ID NAME DRIVER SCOPE 7430df902d7a bridge bridge local ea92373fd499 foo-1-day-ago bridge local ab53663ed3c7 foo-1-min-ago bridge local 97b91972bc3b host host local f949d337b1f5 none null local $ docker network prune --force --filter until=5m Deleted Networks: foo-1-day-ago $ docker network ls NETWORK ID NAME DRIVER SCOPE 7430df902d7a bridge bridge local ab53663ed3c7 foo-1-min-ago bridge local 97b91972bc3b host host local f949d337b1f5 none null local ``` ## Related commands * [network disconnect ](network_disconnect.md) * [network connect](network_connect.md) * [network create](network_create.md) * [network ls](network_ls.md) * [network inspect](network_inspect.md) * [network rm](network_rm.md) * [Understand Docker container networks](https://docs.docker.com/network/) * [system df](system_df.md) * [container prune](container_prune.md) * [image prune](image_prune.md) * [volume prune](volume_prune.md) * [system prune](system_prune.md)