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

如何实现两台EC2实例上不同Docker容器的网络互通?

跨EC2实例Docker容器互通方案

下面是几种可行的实现方式,根据你的场景选择:

1. 使用Docker Swarm Overlay网络

这种方式会创建一个跨节点的逻辑网络,容器可以直接通过名称访问,适合需要统一网络环境的场景:

  • 在EC2实例1上初始化Swarm集群,指定实例的私有IP:
    docker swarm init --advertise-addr <实例1私有IP>
    
    执行后会返回一条docker swarm join命令,复制下来
  • 在EC2实例2上执行刚才复制的命令,加入Swarm集群
  • 在实例1上创建可附加的Overlay网络(--attachable允许普通容器加入,默认仅Swarm服务可用):
    docker network create --driver overlay --attachable cross-ec2-net
    
  • 启动容器时指定该网络:
    实例1启动容器1:
    docker run -d --name container1 --network cross-ec2-net <你的镜像名>
    
    实例2启动容器2:
    docker run -d --name container2 --network cross-ec2-net <你的镜像名>
    
  • 测试:在容器1内直接ping容器2的名称ping container2,或者访问对应端口即可互通

2. 安全组配置+端口映射(简单场景)

如果不需要统一逻辑网络,这种方式更轻量:

  • 配置EC2安全组:给两台实例的安全组添加入站规则,允许对方私有IP访问容器所需的端口(比如容器2要暴露8080端口,就允许实例1的私有IP访问8080)
  • 实例2启动容器2时,把容器端口映射到EC2实例端口:
    docker run -d --name container2 -p 8080:8080 <你的镜像名>
    
  • 实例1的容器1直接通过实例2私有IP:映射端口访问,比如在容器1内执行curl http://<实例2私有IP>:8080

3. 使用Weave Net网络插件

Weave Net可以快速创建跨主机的容器网络,无需Swarm:

  • 在两台EC2实例上分别安装Weave:
    curl -L git.io/weave -o /usr/local/bin/weave && chmod a+x /usr/local/bin/weave
    
  • 在实例1上启动Weave:
    weave launch
    
  • 在实例2上连接到实例1的Weave网络:
    weave launch <实例1私有IP>
    
  • 启动容器时使用Weave网络:
    实例1:
    docker run -d --name container1 --network weave <你的镜像名>
    
    实例2:
    docker run -d --name container2 --network weave <你的镜像名>
    
  • 测试:容器1可以直接通过容器名访问容器2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:20:47