簡體   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