amazon-web-services - 无法连接到 Docker 容器 : Connection Refused

标签 amazon-web-services docker tomcat amazon-ec2 docker-machine

我有一个 war 文件部署为 Docker容器 linux ec2 .但是当我尝试点击 http://ec2-elastic-ip:8080/AppName , 我没有得到任何回应。

我有所有的security group为两者设置入站规则 httphttps .所以这不是问题。

调试

我尝试通过 ssh-ing 调试Linux实例。尝试过的命令 curl localhost:8080 ,这是响应:

curl: (7) Failed to connect to localhost port 8080: Connection refused

尝试使用 127.0.0.1:8080但同样的 react 。

接下来我要做的是列出 Docker 容器:docker ps .我得到:

CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS   PORTS   NAMES
<ID>        <ecr>.amazonaws.com/<my>-registry:2019-05-16.12-17-02   "catalina.sh run"   24 minutes ago      Up 24 minutes       0.0.0.0:32772->8080/tcp   ecs-app-24-name

现在,我使用 docker exec -it <name> /bin/bash 连接到这个容器并尝试检查 tomcat 日志,它清楚地表明我的应用程序 war 已经存在并且 tomcat 已经启动。

我曾尝试检查 docker-machine ip default但这给了我错误:

Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.

现在卡住了。无法进一步调试。我期望的结果是通过上面的 url 访问应用程序。

要做什么?是不是哪里做错了?

此外,值得一提的是,整个基础设施是通过 terraform 管理的.我首先创建基本图像,使用 DockerFile 将 war 复制到 webapps ,推送注册表镜像,最后做一个 terraform apply应用任何更改。

最佳答案

确保 apache 正在监听 docker 容器内的所有 IP 地址,而不仅仅是本地主机。 IP 应该像 0.0.0.0。

如果任何服务在 docker 中运行并且只监听本地主机,则它只能在该容器内访问,而不能从主机访问。

也可以尝试用8080端口启动apache,将docker 8080端口与主机8080端口绑定(bind)

docker run apache -p 8080:8080

关于amazon-web-services - 无法连接到 Docker 容器 : Connection Refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56163183/

相关文章:

amazon-web-services - 在 AWS CDK 中设置 "Enforce inbound rules on PrivateLink traffic"设置

java - 获取 AWS CloudFront 失效使用情况(上个月)

c# - 在容器 dotnet 核心容器中运行时无法加载文件或程序集 'Newtonsoft.Json,版本 = 12.0.0.0

docker - 如何创建docker受限网络

适用于 Google Cloud Functions 的 Dockerfile

java - 为 webapp 存储临时数据的最佳实践

javascript - JS S3 对象访问计数

amazon-web-services - 将多个 IAM 内联策略从 cloudformation 附加到同一角色

java - 在 Mac OSX 上运行项目时出现 404 错误

r - Shiny 的服务器用户/用户组