You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2实例中Docker Compose绑定私有IP端口无效问题排查

问题根源与解决办法

你的核心问题在于同时使用了network_mode: host和ports配置,这两者存在冲突:

  • 当开启network_mode: host时,容器会直接共享主机的网络栈,Docker的端口映射机制完全失效。容器内的服务会默认绑定主机的所有网络接口(即0.0.0.0),所以不管是公网弹性IP、私有IP还是127.0.0.1,都能访问到容器的81端口,这和你设置ports: "10.10.100.100:81:81"的预期完全相反。

正确解决方案

方案1:使用默认bridge网络(推荐)

直接移除network_mode: host配置,让Docker使用默认的bridge网络。此时ports配置会生效,Docker会在主机的私有IP10.10.100.100上监听81端口,仅将该IP的流量转发到容器。修改后的docker-compose.yml如下:

version: '3.8'

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    container_name: npm
    ports:
      - "10.10.100.100:81:81" # 仅绑定到私有IP

重启容器后,只有通过10.10.100.100:81才能访问服务,公网IP和127.0.0.1:81都无法连接。

方案2:必须使用host网络时的处理

如果因特殊需求必须使用host网络,需要修改容器内部服务的监听配置,让服务只绑定到私有IP:

  • 对于Nginx Proxy Manager,找到容器内/etc/nginx目录下的配置文件,把所有监听81端口的规则从listen 81;改成listen 10.10.100.100:81;。
  • 也可以通过挂载自定义配置文件到容器内,覆盖默认配置,确保服务仅监听私有IP。

内容的提问来源于stack exchange,提问作者cybertoast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:47:19