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

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 chrNotificationReceiver$ - Hi there 

所以这工作。 但从外部来看,从docker守护进程的主机,它不是。 尽pipe有EXPOSE命令和-P参数。

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

为什么? 🙁 🙁

源代码在这里 。 Dockerfile,但粘贴正确的下面:

  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 

我有同样的问题:

取代这个:

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

有了这个:

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

令人惊讶的是,它为我工作!

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

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