gpt4 book ai didi

docker - 无法在 swarm 撰写 yaml 文件中使用用户定义的桥

转载 作者:行者123 更新时间:2023-12-02 05:48:59 26 4
gpt4 key购买 nike

我是从docker documentation学到的我无法使用 docker DNS 在不利用用户定义的桥接网络的情况下使用其主机名查找容器。我使用以下命令创建了一个:

docker network create --driver=overlay --subnet=172.22.0.0/16 --gateway=172.22.0.1 user_defined_overlay

并尝试部署一个使用它的容器。撰写文件如下所示:

  version: "3.0"
services:
web1:
image: "test"
ports:
- "12023:22"
hostname: "mytest-web1"
networks:
- test
web2:
image: "test"
ports:
- "12024:22"
hostname: "mytest-web2"
networks:
- test
networks:
test:
external:
name: user_defined_overlay

我的docker版本是:Docker版本17.06.2-ce,构建cec0b72当我尝试部署堆栈时出现以下错误:

network "user_defined_bridge" is declared as external, but it is not in the right scope: "local" instead of "swarm"

我能够创建一个覆盖网络并在撰写文件中定义它。效果很好,但不适用于桥接。docker网络ls的结果:

NETWORK ID          NAME                       DRIVER              SCOPE
cd6c1e05fca1 bridge bridge local
f0df22fb157a docker_gwbridge bridge local
786416ba8d7f host host local
cuhjxyi98x15 ingress overlay swarm
531b858419ba none null local
15f7e38081eb user_defined_overlay overlay swarm

更新

我尝试创建在两个不同的集群节点上运行的两个容器(第一个容器在管理器上运行,第二个容器在工作节点上运行),并指定了用户定义的覆盖网络,如上面的堆栈所示。我尝试使用主机名从 mytest-web1 容器内 ping mytest-web2 容器,但得到未知主机 mytest-web2

最佳答案

从 17.06 开始,您可以创建具有集群范围的节点本地网络。使用 --scope=swarm 选项执行此操作,例如:

docker network create --scope=swarm --driver=bridge \
--subnet=172.22.0.0/16 --gateway=172.22.0.1 user_defined_bridge

然后您可以将此网络与在集群模式中定义的服务和堆栈一起使用。更多详情可以查看PR #32981 .

<小时/>

编辑:您的问题似乎过于复杂化了。只要所有事情都在单个撰写文件中完成,就无需将网络定义为外部网络。如果您想在容器之间进行通信,则需要使用覆盖网络。 DNS 发现包含在桥接网络和覆盖网络上,但 docker 创建的默认“桥接”网络除外。对于撰写文件,如果不显式地将其配置为具有该名称的外部网络,则您永远不会使用该网络。因此,要使容器到容器网络正常工作,您可以让 docker-compose 或 docker stack deploy 自动为您的项目/堆栈创建网络:

version: "3.0"
services:
web1:
image: "test"
ports:
- "12023:22"
web2:
image: "test"
ports:
- "12024:22"

请注意,我还删除了“主机名”设置。 DNS 解析不需要它。您可以直接与这些容器中名为“web1”或“web2”的服务 VIP 进行通信。

使用docker-compose它将创建一个默认的桥接网络。集群模式将创建一个覆盖网络。这些默认设置非常适合在每种情况下允许 DNS 发现和容器到容器的通信。

关于docker - 无法在 swarm 撰写 yaml 文件中使用用户定义的桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com