繁体   English   中英

无法连接到Docker容器:拒绝连接

[英]Unable to connect to Docker container: Connection Refused

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

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

调试

我尝试通过ssh-ing linux实例进行调试。 尝试使用命令curl localhost:8080 ,这是响应:

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

尝试使用127.0.0.1:8080但响应相同。

我要做的下一件事是列出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日志,这清楚地表明我的应用程序大战已经开始,并且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将战争复制到DockerFile ,推送注册表映像,最后进行terraform apply以应用所有更改。

当前,您的应用程序在随机主机端口(即32772 ,请参阅32772 docker ps输出。一旦在安全组中允许端口32772 ,您就必须能够在http://ec2-ip:32772上访问您的应用程序。

为了使其能够在主机端口8080上运行,您需要在docker run期间绑定/暴露主机端口-

$ docker run -p 8080:8080 ......

如果您使用的是ECS,则理想情况下,应在服务中使用ALB和TG。

但是,如果您没有使用ALB等,则可以尝试在TD "hostPort": 8080提供一个静态hostPort(我没有尝试过)。 如果运行良好,则需要确保将部署策略更改为“最低健康百分比= 0”,否则可能会遇到端口冲突问题。

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

如果任何服务正在docker内部运行并且仅侦听localhost,则只能在该容器内部访问该服务,而不能从主机访问该服务。

您也可以尝试使用端口8080启动apache并将docker 8080端口与主机8080端口绑定

docker run apache -p 8080:8080

如果应用程序需要网络端口,则必须在docker文件中将暴露

EXPOSE <port> [<port>/<protocol>...]

如果需要将该端口映射到网络上的特定端口,则必须在启动新容器时定义该端口。

docker run -p 8080:8080/tcp  my_app

如果使用分别运行每个映像,则必须每次都绑定端口。 如果您不想每次都执行此操作,则可以使用docker-compose并在其中添加ports指令。

ports:
 - "8080:8080/tcp"

假设您在dockerfile中添加了暴露,则完整的docker-compose.yml如下所示:

version: '1'
services:
  web:
    build:
    ports:
    - "8080:8080"
    my_app:
    image: my_app

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM