Docker 自定义网络(User-defined network)允许您更精细地控制容器间的通信。默认情况下,当您启动一个容器时,它会被连接到名为 bridge
的默认网络上,这使得容器能够相互通信。然而,默认网络可能无法满足所有场景下的需求,比如需要更复杂的网络配置或隔离要求等。
创建自定义网络的好处包括但不限于:
- 控制哪些容器可以相互通信。
- 隔离容器的网络栈。
- 使用特定的驱动程序来满足不同的网络需求(如 overlay 网络用于 Docker Swarm 模式)。
- 提供更好的网络性能和安全性。
创建自定义网络
要创建一个自定义网络,您可以使用 docker network create
命令。例如,创建一个名为 my-net
的桥接网络:
docker network create --driver bridge my-net
这里,--driver
参数指定了要使用的网络驱动类型。除了 bridge
外,还有其他类型的驱动如 overlay
, macvlan
, null
等。
连接容器到自定义网络
一旦创建了自定义网络,就可以将容器连接到这个网络上。使用 docker container connect
命令来连接现有容器:
docker container connect my-net my-container
如果您在创建容器时就希望将其连接到某个网络,可以在 docker run
命令中直接指定网络:
docker run -d --name my-container --network my-net my-image
查看网络信息
使用 docker network ls
可以查看所有可用的网络列表。要查看某个网络的详细信息,可以使用:
docker network inspect my-net
删除自定义网络
当不再需要某个自定义网络时,可以使用 docker network rm
命令来删除它:
docker network rm my-net
请注意,在删除网络之前,必须确保没有容器连接到该网络上。如果仍有容器连接,Docker 将不允许删除该网络。
注意事项
- 在删除自定义网络之前,请确保没有容器依赖于该网络。
- 当使用
overlay
类型的网络时,请确保您的 Docker 引擎支持此类型,并且可能需要管理员权限。 - 在设计网络时,请考虑安全性和隔离性要求,合理规划容器间通信策略。
通过使用自定义网络,您可以更好地管理您的 Docker 容器之间的通信,并构建出更加复杂的服务交互模式。