如何使用 docker network disconnect 命令将容器从网络中断开

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 docker network disconnect 命令管理容器网络连接。我们将首先创建一个自定义网络,并运行一个连接到该网络的容器。

接下来,你将了解如何将一个现有容器连接到另一个额外的网络。最后,你将学习如何将容器从特定网络断开连接,并验证断开操作是否成功。这个实践练习将为你提供控制容器网络连接性的实际经验。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555175{{"如何使用 docker network disconnect 命令将容器从网络中断开"}} docker/inspect -.-> lab-555175{{"如何使用 docker network disconnect 命令将容器从网络中断开"}} docker/create -.-> lab-555175{{"如何使用 docker network disconnect 命令将容器从网络中断开"}} docker/pull -.-> lab-555175{{"如何使用 docker network disconnect 命令将容器从网络中断开"}} docker/network -.-> lab-555175{{"如何使用 docker network disconnect 命令将容器从网络中断开"}} end

创建网络和容器

在这一步中,你将学习如何创建一个自定义的 Docker 网络,并运行一个连接到该网络的容器。默认情况下,Docker 容器会连接到 bridge 网络,但创建自定义网络可以更好地实现容器之间的隔离和通信控制。

首先,让我们创建一个名为 my-network 的新桥接网络。

docker network create my-network

你应该会在输出中看到新创建网络的 ID。

接下来,我们将从 Docker Hub 拉取 nginx 镜像。这个镜像将用于创建我们的容器。

docker pull nginx

此命令会将 nginx 镜像下载到你的本地机器。

现在,让我们运行一个 Nginx 容器,并将其连接到我们刚刚创建的 my-network。我们将把这个容器命名为 my-nginx

docker run -d --name my-nginx --network my-network nginx

让我们来拆解一下这个命令:

  • docker run:此命令用于运行一个容器。
  • -d:这个标志表示以分离模式运行容器,即容器在后台运行。
  • --name my-nginx:这将容器命名为 my-nginx
  • --network my-network:这将容器连接到我们创建的 my-network
  • nginx:这是用于创建容器的镜像。

运行该命令后,Docker 将启动 my-nginx 容器,并将其连接到 my-network

将容器连接到网络

在上一步中,我们创建了一个网络并运行了一个连接到该网络的容器。在这一步中,我们将演示如何将一个 正在运行的 容器连接到 另一个 网络。如果你需要一个容器与不同网络上的其他容器进行通信,这将非常有用。

首先,让我们创建另一个名为 another-network 的新桥接网络。

docker network create another-network

你应该会在输出中看到这个新网络的 ID。

现在,我们将把现有的 my-nginx 容器连接到这个新的 another-network

docker network connect another-network my-nginx

此命令将指定的容器 (my-nginx) 连接到指定的网络 (another-network)。现在,该容器将在 my-networkanother-network 这两个网络上都有网络接口。

为了验证容器是否已连接到这两个网络,我们可以检查容器的网络设置。

docker inspect my-nginx

在输出中查找 "Networks" 部分。你应该会看到 my-networkanother-network 的条目,这表明容器已成功连接到这两个网络。

将容器从网络断开连接

在上一步中,我们将 my-nginx 容器连接到了另一个网络 another-network。在这一步中,你将学习如何将容器从特定网络中断开连接。当你不再需要容器成为某个特定网络的一部分时,这会很有用。

要将 my-nginx 容器从 another-network 中断开连接,我们使用 docker network disconnect 命令。

docker network disconnect another-network my-nginx

此命令将网络名称 (another-network) 和容器名称 (my-nginx) 作为参数。

执行此命令后,容器将从指定的网络中移除。除非其他容器也在共享网络上,否则该容器将无法再与 another-network 上的其他容器进行通信。

为了确认容器已断开连接,我们可以再次检查容器的网络设置。

docker inspect my-nginx

查看输出中的 "Networks" 部分。现在你应该只会看到列出的 my-network,而 another-network 应该已不存在。这证实了容器已成功从 another-network 中断开连接。

验证容器已断开连接

在上一步中,我们将 my-nginx 容器从 another-network 中断开了连接。在这一步中,我们将进行最终验证,以确保该容器确实不再连接到 another-network

我们可以再次使用 docker inspect 命令来检查 my-nginx 容器的网络配置。

docker inspect my-nginx

查看此命令的输出。具体来说,查找 "Networks" 部分。你应该只会在 "Networks" 下列出 my-network。此列表中没有 another-network 就证实了容器已成功从该网络中断开连接。

这一步是对上一步操作的确认,同时也强化了你对如何检查 Docker 容器网络状态的理解。

总结

在本次实验中,你学习了如何管理 Docker 容器的网络连接。首先,你使用 docker run --network 命令创建了一个自定义桥接网络,并直接将一个容器连接到该网络。这展示了容器在创建时如何连接到特定网络。

随后,你探索了如何使用 docker network connect 命令将一个正在运行的容器连接到另一个网络。最后,你学习了如何使用 docker network disconnect 命令将容器从网络中断开连接,并验证了断开操作,这体现了在容器创建后管理其网络成员关系的灵活性。