在Mac上访问Docker转发的端口

这里有一个相关的post: 在Docker Toolbox中安装的Mac OSX上的Docker中的端口映射

但它对我没有用

获取容器的端口

docker端口485186e65a5e

8080/tcp -> 0.0.0.0:33360 8088/tcp -> 0.0.0.0:33359 19888/tcp -> 0.0.0.0:33358 50070/tcp -> 0.0.0.0:33357 50075/tcp -> 0.0.0.0:33356 8042/tcp -> 0.0.0.0:33361 

检查是否有人在容器中监听端口

 bash-4.1# netstat -alnpt | grep 19888 tcp 0 0 127.0.0.1:19888 0.0.0.0:* LISTEN 1094/java 

做在容器中的wget

 bash-4.1# wget 127.0.0.1:19888 --2016-04-11 14:16:54-- http://127.0.0.1:19888/ Connecting to 127.0.0.1:19888... connected. HTTP request sent, awaiting response... 302 Found Location: http://127.0.0.1:19888/jobhistory [following] --2016-04-11 14:16:54-- http://127.0.0.1:19888/jobhistory Reusing existing connection to 127.0.0.1:19888. HTTP request sent, awaiting response... 200 OK Length: 6763 (6.6K) [text/html] Saving to: `index.html' 100%[================================================================================================================================================================================>] 6,763 --.-K/s in 0s 2016-04-11 14:16:54 (182 MB/s) - `index.html' saved [6763/6763] 

尝试从主机访问转发的端口,没有运气…:(((

 $docker-machine ip default 192.168.99.100 $ wget 192.168.99.100:33358 --2016-04-11 16:18:04-- http://192.168.99.100:33358/ Connecting to 192.168.99.100:33358... failed: Connection refused. 

我做错了什么?

Omg,所需的服务在容器中的127.0.0.1上启动,这就是为什么它从外部不可见的原因。 我已经修改了服务configuration从0.0.0.0开始,现在我可以访问转发的容器端口

我有同样的问题,并能够通过指定容器中的服务器使用的主机来解决它。

注意:当使用下面的主机时 ,这意味着一个Web服务器主机。 当我使用主机 ,我的意思是我正在使用的主要操作系统(即不是一个容器或Web服务器,只是我的笔记本电脑作为一台机器)

问题

在像webpack-dev-serverhttp-server这样的容器上运行Web服务器时,会自动运行使用http://localhost主机的应用程序。 通常,当您启动服务器时,您会在输出中看到这一点。 就像是 :

Project is running at http://localhost:8080

要么

Server available at http://127.0.0.1:8080

在大多数机器上, localhost127.0.0.1是一回事。 这个主机是不公开的 。 因此,即使您的主机在正确的位置,也看不到任何东西。

在容器中运行服务器时,应该指定一个公共主机。

webpack-dev-server --port 8080 --host 0.0.0.0

要么

http-server -p 8080 -a 0.0.0.0

由于0.0.0.0地址对任何外部机器都是可见的,所以您应该能够看到您的应用程序按照预期从主机上运行。

注意:这适用于任何服务器,如Python的SimpleHTTPServer等。请查看如何在文档中更改所选服务器的主机

资源/点头 (如何使用可公开访问的主机运行webpack-dev-erver)[ 如何使webpack dev服务器在端口80和0.0.0.0上运行以使其可公开访问?