如何删除未使用的 Docker 网络

DockerBeginner
立即练习

简介

Docker 是一个强大的容器化平台,可让你在一致且可扩展的环境中构建、部署和管理应用程序。在使用 Docker 时,保持网络配置的简洁和高效非常重要。本教程将指导你识别和删除未使用的 Docker 网络的过程,帮助你优化 Docker 环境。

理解 Docker 网络

Docker 网络是 Docker 生态系统中的一个基本概念。它们提供了一种连接容器并实现容器间通信的方式。Docker 支持多种网络驱动程序,每种驱动程序都有其自身的一组特性和用例。

Docker 中的默认网络驱动程序是 bridge 驱动程序,它在主机上创建一个虚拟网桥,并将容器附加到该网桥上。这使得容器能够相互通信以及与主机系统通信。其他网络驱动程序包括 overlayhostmacvlan,每种都有其自身的优势和用例。

graph LR A[主机] --> B[Docker 网桥网络] B --> C[容器 1] B --> D[容器 2] B --> E[容器 3]

overlay 网络驱动程序用于多主机网络,允许不同 Docker 主机上的容器相互通信。host 网络驱动程序消除了容器与主机之间的网络隔离,而 macvlan 驱动程序允许为容器分配 MAC 地址,使其在网络上看起来像物理设备。

在使用 Docker 时,理解不同的网络驱动程序及其用例至关重要,因为这能让你为应用程序选择最合适的网络配置。

识别并列出未使用的 Docker 网络

要识别并列出未使用的 Docker 网络,你可以使用以下 Docker CLI 命令:

列出所有 Docker 网络

要列出系统上的所有 Docker 网络,你可以使用 docker network ls 命令:

docker network ls

这将输出一个包含以下列的表格:

  • 网络 ID
  • 名称
  • 驱动程序
  • 作用域

识别未使用的 Docker 网络

要识别未使用的 Docker 网络,你可以使用带有 -f(过滤)选项的 docker network ls 命令:

docker network ls -f "dangling=true"

这将列出所有未被任何容器使用的 Docker 网络。dangling=true 过滤器确保只显示没有任何连接容器的网络。

或者,你可以使用以下命令列出所有未被任何运行中的容器使用的网络:

docker network ls --filter "scope=local" --filter "driver=bridge" --filter "name=^((?!host|none|bridge).)*$" --format "{{.ID}}\t{{.Name}}\t{{.Driver}}"

此命令过滤网络列表,仅显示本地的、基于网桥的网络,这些网络不是默认的 hostnonebridge 网络。

此命令的输出将是一个包含以下列的表格:

  • 网络 ID
  • 名称
  • 驱动程序

通过使用这些命令,你可以轻松识别并列出系统上未使用的 Docker 网络,这对于清理你的 Docker 环境很有用。

删除未使用的 Docker 网络

在识别出未使用的 Docker 网络后,你可以使用 docker network rm 命令将其删除。

删除单个未使用的网络

要删除单个未使用的 Docker 网络,你可以使用以下命令:

docker network rm <网络名称>

<网络名称> 替换为你要删除的网络的名称。

删除多个未使用的网络

如果你有多个未使用的 Docker 网络,可以通过使用带有 -q(安静)选项的 docker network ls 命令获取网络 ID,然后将它们传递给 docker network rm 命令,在单个命令中删除它们:

docker network ls -f "dangling=true" -q | xargs docker network rm

此命令首先使用带有 -f "dangling=true" 过滤器的 docker network ls 命令列出所有未使用(悬空)的 Docker 网络。-q 选项用于仅输出网络 ID。然后,这些 ID 使用 xargs 实用程序传递给 docker network rm 命令,该命令将删除所有列出的网络。

删除所有未使用的网络

如果你想删除系统上所有未使用的 Docker 网络,可以使用以下命令:

docker network prune

此命令将删除所有未被任何容器使用的网络。

通过使用这些命令,你可以轻松删除系统上未使用的 Docker 网络,这有助于保持你的 Docker 环境整洁有序。

总结

在本教程中,你已经学习了如何通过识别和删除未使用的网络来有效地管理你的 Docker 网络。按照所述步骤操作,你可以确保你的 Docker 环境保持有序且高效,从而提高性能并减少资源消耗。对于任何 Docker 用户或管理员来说,掌握 Docker 网络管理都是一项至关重要的技能。