此处有相关帖子:Port mapping in Docker on Mac OSX installed with Docker Toolbox
但它对我不起作用
获取容器的端口
docker port 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.
我做错了什么?
答案 0 :(得分:3)
Omg,所需的服务在容器中的 127.0.0.1 上开始,这就是为什么它从外部世界不可见。我已将服务配置修改为从0.0.0.0开始,现在我可以访问转发的容器端口
答案 1 :(得分:1)
我遇到了同样的问题,并且能够通过指定容器中服务器使用的主机来修复它。
注意:在下面使用主机时,它表示Web服务器主机。当我使用主机时,我的意思是我正在使用的主要操作系统(即不是容器或网络服务器,只是我的笔记本电脑作为机器)
问题
在webpack-dev-server
和http-server
等容器上运行网络服务器会使用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等。只需在文档中查找如何更改所选服务器的主机
<强>资源/ Nods的强> (如何使用可公开访问的主机运行webpack-dev-erver)[How to make the webpack dev server run on port 80 and on 0.0.0.0 to make it publicly accessible?