在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-server
和http-server
这样的容器上运行Web服务器时,会自动运行使用http://localhost
主机的应用程序。 通常,当您启动服务器时,您会在输出中看到这一点。 就像是 :
Project is running at http://localhost:8080
要么
Server available at http://127.0.0.1:8080
在大多数机器上, localhost
和127.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上运行以使其可公开访问?