我使用 ECS 将 docker 容器部署到 ec2 实例。
我的弹性云服务器任务定义:
{
"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": ""
}
当我 ssh 进入我的 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
我错过了什么吗?仍然无法访问容器内运行的服务
我想出了原因:默认情况下,容器内的nodejs应用程序正在侦听来自本地主机的连接。我将其配置为接受来自任何来源的请求,并且上述配置一切正常。