无法与地址为0.0.0.0:9000的容器连接。

问题描述 投票:0回答:1

我的 containerplay/scala 申请开始于 [info] p.c.s.AkkaHttpServer - Listening for HTTP on /0.0.0.0:9000. 但我无法从浏览器连接到它。我在我的windows机器上运行这个容器,在使用了 Docker for Windows

Dockerfile

FROM openjdk:8
WORKDIR deploy
COPY target/universal/myapp-1.0.zip .

COPY conf/logback_dev.xml ./logback.xml
COPY conf/application_dev.conf ./application.conf
RUN unzip myapp-1.0.zip
RUN chmod +x myapp-1.0/bin/myapp
EXPOSE 9000
ENTRYPOINT myapp-1.0/bin/myapp -Dplay.http.secret.key=changemeplease -Dlogger.file=/deploy/logback.xml -Dconfig.file=/deploy/application.conf

我启动的容器是 docker run myApp -p 9000:9000 -network="host" 并尝试 docker run myApp -p 9000:9000 -network="host"

更新

这很有趣.如果我在端口前指定图像名称,那么应用程序就无法访问。

docker run  myApp -p 9000:9000

docker container ps -a我看到了(没有将localhost:9000映射到9000)。

C:\Users\manuc>docker container ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                NAMES
4d16547cd96d        myApp   "/bin/sh -c 'myApp…"   10 seconds ago      Up 9 seconds        9000/tcp, 9042/tcp   ecstatic_bell

但如果我在图像名称前指定端口,那么应用程序就可以访问。

docker run  -p 9000:9000 myApp

docker container ps -a,我看到了localhost:9000 -> 9000的映射。

C:\Users\manuc>docker container ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                              NAMES
24b571cc0057        myApp   "/bin/sh -c 'MyApp…"   39 seconds ago      Up 38 seconds       0.0.0.0:9000->9000/tcp, 9042/tcp   silly_yalow
docker playframework-2.6
1个回答
0
投票

当你的容器表现得不像你想要的那样时,要做的事情。

  • 检查你的应用程序是否在你的电脑上运行。

  • 在您运行容器后,检查它是否健康。docker ps. 如果它不健康,问题通常在你的应用程序中。

  • 确保它在运行时没有错误,检查日志,用 docker logs <container-id>. 如果日志正常,问题通常出在容器网络配置上。

  • 确保您可以通过 docker exec -it <container-id> bash. 并尝试访问端口与 curlwget. 如果它无法到达,问题可能是在iptables,防火墙,或您的应用程序。

  • 如果你能确保以上所有步骤都能按预期工作。问题出在docker网络配置上。

Docker网络主机只适用于Linux,不适用Mac和Windows。你可以用以下方法运行容器 docker run -p 9000:9000 myapp. 查看文档。https:/docs.docker.comnetworkhost#:~:text=The%20host%20networking%20driver%20only,the%20docker%20service%20create%20command。.


《公约》的一般形式 docker run 命令是 docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 可见 文件. 您需要在图像名称前指定端口选项。

© www.soinside.com 2019 - 2024. All rights reserved.