docker - 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 机器连接?
解决方案
在一台机器内,您可以使用外部网络将容器连接到现有堆栈。如果您在新容器下未指定任何网络或明确使用该网络,则第二个片段应该可以工作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 service
anddocker stack
而不是docker-compose
命令。 - 管理 swarm。
推荐阅读
- python-3.x - Python遍历函数列表中的一对值
- r - 使用带光泽的隔离
- python - Python - 删除输入中的段落中断
- ruby-on-rails - 我的 Rails 应用程序中没有参数键。我该如何解决它或设置一个,以便我可以将值保存到变量中
- android - Android 9.0:不允许启动服务:应用程序在后台.. onResume() 之后
- javascript - 如何将数据从新窗口传递到父窗口
- c++ - 为什么 PlayerController “拥有” yaw pitch 和 roll,而 Character “拥有”它的位置?
- python - 为什么单词“got”的词干仍然是“got”而不是“get”?
- meteor - Mobx 模型中的 Meteor.userId()
- html - 从模板中删除轮廓并将其扩展为 100%