无法将ec2实例端口映射到docker容器的端口

时间:2018-03-18 11:00:16

标签: amazon-web-services docker amazon-ec2

我使用ECS将docker容器部署到ec2实例。

我的ECS任务定义:

{
  "containerDefinitions": [
    {
      "name": "postgraphile-container",
      "image": "019384571013.dkr.ecr.us-east-2.amazonaws.com/test-repository",
      "memory": 500,
      "essential": true,
      "portMappings": [
        {
          "hostPort": 5000,
          "containerPort": 5000,
          "protocol": "tcp"
        }
      ]
    }
  ],
  "volumes": [],
  "memory": "900",
  "cpu": "128",
  "placementConstraints": [],
  "family": "postgraphile",
  "taskRoleArn": ""
}

当我进入我的ec2实例时,我确实看到容器正在运行。当我附加到正在运行的容器时,我可以看到我的节点应用程序在端口5000上运行,我成功获得了curl localhost:5000的响应。当我从容器中退出并尝试在ec2实例中执行相同操作时,出现错误:curl: (56) Recv failure: Connection reset by peer

我还使用docker inspect获得了一个docker容器ip并尝试执行相同的curl <container ip>:5000并收到此错误:curl: (7) Failed to connect to 172.17.0.2 port 5000: Connection refused

我错过了什么吗?仍然无法访问容器内运行的服务

1 个答案:

答案 0 :(得分:3)

我找出原因:默认情况下,容器内的nodejs app正在侦听来自localhost的连接。我将其配置为接受来自任何来源的请求,并且上述配置一切正常。