无法从外部访问Docker容器中的应用

无法从外部访问Docker容器中的应用,docker,sbt,port,akka-http,Docker,Sbt,Port,Akka Http,所以这起作用了。但是从外部,从docker守护进程的主机,它没有。尽管有EXPOSE命令和-P参数 docker pull kovacshuni/riptube:1.0.0-SNAPSHOT docker run -it -P --name="riptube" kovacshuni/riptube:1.0.0-SNAPSHOT bin/riptube & curl -X POST -d "Hi there" localhost:8082/notify INFO 15:55:06 c.h.

所以这起作用了。但是从外部,从docker守护进程的主机,它没有。尽管有EXPOSE命令和-P参数

docker pull kovacshuni/riptube:1.0.0-SNAPSHOT
docker run -it -P --name="riptube" kovacshuni/riptube:1.0.0-SNAPSHOT
bin/riptube &
curl -X POST -d "Hi there" localhost:8082/notify
INFO 15:55:06 c.h.r.NotificationReceiver$ - Hi there
为什么(:(

源代码。Dockerfile也是,但粘贴在下面:

docker port riptube 8082
0.0.0.0:32785
curl -X POST -d "Hi there" localhost:32785/notify
curl: (52) Empty reply from server

假设您不在Linux机器上,我想您必须在vm中转发端口:

 FROM frolvlad/alpine-oraclejdk8

 RUN apk add --update bash py-pip ca-certificates curl
 RUN rm -rf /var/cache/apk/*
 RUN pip install youtube-dl

 WORKDIR /opt/riptube
 ADD target/pack/ /opt/riptube
 EXPOSE 8082
 ENTRYPOINT /bin/bash
 CMD

我也有同样的问题:

替换此项:

$ VBoxManage controlvm "name-of-your-vm" natpf1 "tcp-port8082,tcp,,8082,,8082"
为此:

private val httpBindingF = Http().bindAndHandle(ripController.route, "localhost", 8080)

令人惊讶的是,它对我很有效!

我知道,但我也在linux机器上尝试过。同样在Mac上,我第一次访问docker deamon VM,甚至从那里我也无法访问该应用程序。你似乎将服务器绑定到中的8080端口。你是否在某个地方将暴露的8082端口和绑定的8080端口关联起来?我的主要应用程序是RipTube,但这需要复杂的设置。对于这个问题,我的主要问题是NotificationReceiver,在这里我绑定到8082。所以不是这样。还有比较:从docker容器内部curl工作到8082,从外部它不工作。感谢提示,我将尝试一下。这是正确的答案。
localhost
是硬编码到的<在大多数系统中,代码>127.0.0.1。
private val httpBindingF = Http().bindAndHandle(ripController.route, "0.0.0.0", 8080)