【问题标题】:Why does the client can not connect to localhost:8080?为什么客户端无法连接到 localhost:8080?
【发布时间】:2019-10-05 16:32:50
【问题描述】:

我有以下dockerfile

FROM openjdk:8 as stage0
WORKDIR /opt/docker
COPY opt /opt
USER root
RUN ["chmod", "-R", "u=rX,g=rX", "/opt/docker"]
RUN ["chmod", "u+x,g+x", "/opt/docker/bin/sapmock"]

FROM openjdk:8
USER root
RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
WORKDIR /opt/docker
COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
EXPOSE 8080
USER 1001:0
ENTRYPOINT ["/opt/docker/bin/sapmock"]
CMD []  

如您所见,这暴露了端口8080

当我开始从图像运行容器时,如下所示:

docker run -it  -p 8080:8080 db261ab225b5
Server online at localhost on the port 8080
Press RETURN to stop... 

客户端无法通过地址localhost:8080连接,为什么?

【问题讨论】:

    标签: docker


    【解决方案1】:

    Rajesh 的回答可能是正确的。尽管我认为您的应用程序更有可能只是绑定到容器内的localhost/127.0.0.1,但这不起作用。确保您的应用绑定到容器内的0.0.0.0,然后端口映射将起作用。

    【讨论】:

    • 非常感谢,它有效。但是0.0.0.0127.0.0.1有什么区别呢?
    • 127.0.0.1 是环回接口,它只能从 that 容器访问。 0.0.0.0 表示所有接口。您的容器在 Docker 桥接网络上有一个具有不同 IP(通常为172.16.x.x)的接口,因此您也可以对此进行绑定,但这对于故障/重启等并不可靠,因为它会发生变化。我对另一个答案的一些更详细的解释-> stackoverflow.com/questions/50282792/…
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2018-02-05
    • 2014-06-01
    • 2020-01-20
    • 1970-01-01
    相关资源
    最近更新 更多