gpt4 book ai didi

docker 组成 "ports": listen on multiple IP addresses/IP range

转载 作者:行者123 更新时间:2023-12-02 01:40:28 25 4
gpt4 key购买 nike

而不是监听单个 IP 地址,例如本地主机:

ports:
- "127.0.0.1:80:80"

我希望容器只监听本地网络,例如:

ports:
- "10.0.0.0/16:80:80"

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.SERVICE.ports contains an invalid type, it should be a number, or an object

这可能吗?

我还不想使用集群模式等。


如果不支持 IP 范围,可能至少有多个 IP 地址,例如 10.0.0.210.0.0.3

ERROR: for CONTAINER  Cannot start service SERVICE: driver failed programming external connectivity on endpoint CONTAINER (...): Error starting userland proxy: listen tcp 10.0.0.3:80: bind: cannot assign requested address

ERROR: for SERVICE Cannot start service SERVICE: driver failed programming external connectivity on endpoint CONTAINER (...): Error starting userland proxy: listen tcp 10.0.0.3:80: bind: cannot assign requested address

还是不支持收听10.0.0.3

主机连接到10.0.0.0/16:

> ifconfig
ens10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
inet 10.0.0.2 netmask 255.255.255.255 broadcast 10.0.0.2
inet6 f**0::8**0:ff:f**9:b**7 prefixlen 64 scopeid 0x20<link>
ether **:00:00:**:**:** txqueuelen 1000 (Ethernet)

最佳答案

监听单个 IP 地址 似乎不正确。该服务正在 IP 地址监听。

假设您的虚拟机有两个网络接口(interface)(以太网卡):

网络 1 → 子网:10.0.0.0/24 和 IP 10.0.0.100
网络 2 → 子网:10.0.1.0/24 和 IP 10.0.1.200

  • 如果您设置 127.0.0.1:80:80,这意味着您的服务监听在 127.0.0.1 的 ( localhost) 端口 80。
  • 如果您想从 10.0.0.0/24 子网访问服务,您应该设置 10.0.0.100:80:80 并使用 http://10.0 .0.100:80 能够从外部主机连接您的容器的地址

如果你想同时从多个网络访问服务,你可以将容器端口绑定(bind)到多个端口,其中IP是connection source IP ):

ports:
- 10.0.0.100:80:80
- 10.0.1.200:80:80
- 127.0.0.1:80:80

并且不要忘记在 VM 的防火墙上打开 80 端口,如果防火墙存在并限制该网络

关于 docker 组成 "ports": listen on multiple IP addresses/IP range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71658241/

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