如何在Docker容器中公开端口

我已经在自定义端口(8080)上的泊坞窗容器中运行Web服务。 在这里,我试图运行一个容器,将相关容器的端口暴露(如图所示 ),但无济于事。

docker run -p 127.0.0.1:8080:8080 beatthemarket run wait 

但我似乎无法到达该Web服务端点。

  • http://127.0.0.1:8080
  • HTTP://本地主机:8080

我)我是否正确地暴露容器的端口? ii)如果端口不可用,或者如果我的web服务没有被调用(如果能够将容器放入容器并仅仅curl端点将会很好),如何排除故障。

我的Dockerfile可以在这里看到。 我正在使用Adzerk的boot-clj基础镜像。

实际上运行docker,每次检索一堆瓶子。 然后启动块( wait任务),这是我想要的(一个Web服务器将处理Web请求)。 而这就是我迷失的地方。 在docker中启动,就像我所要求的一样。 但我似乎无法得到根URI 应该返回的基本的Hello World消息。

 $ docker run -p 127.0.0.1:8080:8080 beatthemarket run wait Downloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar... Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/ Retrieving pod-2.5.5.jar from https://clojars.org/repo/ Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/ Retrieving core-2.5.5.jar from https://clojars.org/repo/ ... Implicit target dir is deprecated, please use the target task instead. Set BOOT_EMIT_TARGET=no to disable implicit target dir. 

Chrome ,curl和wget都说这个连接是被拒绝的。

 $ curl http://127.0.0.1:8080/ curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused $ wget http://127.0.0.1:8080/ --2016-04-21 20:07:32-- http://127.0.0.1:8080/ Connecting to 127.0.0.1:8080... failed: Connection refused. 

您需要将EXPOSE语句添加到您的Dockerfile 8080端口。

以下是Docker的参考: https : //docs.docker.com/engine/reference/builder/#expose

你最终的Dockerfile应该是这样的:

 FROM adzerk/boot-clj EXPOSE 8080 WORKDIR /app COPY . /app