Docker-compose“端口”:监听多个 IP 地址/IP 范围

hb0*_*hb0 4 docker docker-compose docker-network

而不是监听单个 IP 地址,例如 localhost:

ports:
- "127.0.0.1:80:80"
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

这可能吗?

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


如果不支持 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
Run Code Online (Sandbox Code Playgroud)

或者根本不支持收听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)
Run Code Online (Sandbox Code Playgroud)

rzl*_*vmp 5

Listening to a single IP address似乎不正确。该服务正在侦听IP地址。

\n

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

\n

网络 1 \xe2\x86\x92 子网:10.0.0.0/24和 IP 10.0.0.100
\n网络 2 \xe2\x86\x92 子网:10.0.1.0/24和 IP10.0.1.200

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

如果要同时访问多个网络的服务,可以将容器端口绑定到多个端口,其中IP为连接源IP):

\n
ports:\n  - 10.0.0.100:80:80\n  - 10.0.1.200:80:80\n  - 127.0.0.1:80:80\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n