首页 > 解决方案 > docker容器连接现有容器网络的网络模式

问题描述

美好的一天,您能否为我的问题在下面建议网络模式。

我在同一个 Linux 机器上的 5 个 docker 容器上运行 5 个微服务,这些容器与桥接网络通信

networks:
  bis-bridge:
    name: bis-bridge
    driver: bridge

现在我需要创建新的容器,它可以安装在运行 5 个微服务的同一个 Linux 机器上或同一网络中的另一个 Linux机器上(用户选项)。我可以将现有的“双桥”网络用于新容器连接到现有网络吗?

networks:
  default:
    external: true
    name: bis-bridge

或者需要更改网络模式以从同一个 Linux 机器/从另一个 Linux 机器连接?

标签: dockernetworkingdocker-composecontainers

解决方案


在一台机器内,您可以使用外部网络将容器连接到现有堆栈。如果您在新容器下未指定任何网络或明确使用该网络,则第二个片段应该可以工作default。像这样:

version: "3"
networks:
  default:
    external: true
    name: bis-bridge
services:
# both will work
  one:
    image: someimage
  
  two:
    image: someimage
    networks:
      default:

至于从另一台机器(物理或虚拟)加入容器,也可以使用另一种网络类型。您需要一个覆盖网络,它仅在集群模式下可用。请注意,这不是快速破解,而是从本地部署到编排框架的一步。你必须:

  • 通过将节点连接在一起形成一个集群(即swarm)。
  • 修改 swarm 的所有服务定义并重新部署旧容器。我猜您希望将旧容器保留在旧节点上,并且没有明确定义您将在集群的节点之间随机分布容器。
  • 学会使用docker serviceanddocker stack而不是docker-compose命令。
  • 管理 swarm

推荐阅读