【问题标题】:Network mode for docker container to connet existing container networkdocker容器连接现有容器网络的网络模式
【发布时间】:2021-06-10 13:34:31
【问题描述】:

您好,请您为我的问题建议以下网络模式。

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

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

现在我需要创建一个新容器,该容器可以安装在同一个 Linux 机器上,其中运行 5 个微服务或另一个 Linux 机器在同一个网络中(用户选项) .我可以使用现有的 'bis-bridge' 网络让新容器连接到现有网络吗?

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

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

【问题讨论】:

  • 是的,您可以使用外部(现有)网络。此外,第二个 sn-p 应该在某些条件下工作。你为什么要问?有错误吗?
  • 如果我从另一个 linux 机器运行容器,我会遇到错误。错误:网络双桥声明为外部,但找不到。请使用docker network create bis-bridge手动创建网络,然后重试。

标签: docker networking docker-compose containers


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的澄清。我是码头工人的新手。如果我使用覆盖网络,是否可以在同一主机上安装包含,或者它只允许安装多个主机?为什么因为我的要求是新容器可以安装在运行 5 个微服务的同一主机或不同的主机上。
  • @user3928249 您必须使用placement constraints 修改服务定义。更具体地说,您需要编写要在哪个节点上部署此服务容器。您可以坚持使用节点 ID 或一些节点标签。
  • 谢谢。使用 Wea​​ve Net 是否可以解决我的问题?
  • @user3928249 我不熟悉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多