是否可以从外部设备访问泊坞窗服务? 我通过无花果构建了服务并暴露了端口3000.我使用带有docker-osx的fig,因此docker在虚拟机内运行。
现在我需要访问外部设备(即手机或平板电脑)提供的服务。
目前我只能从托管VirtualBox-Environment的机器上使用localdocker:3000访问该服务。
答案 0 :(得分:18)
对于那些使用OSX(和Windows)进行测试的人,Docker会创建一个虚拟机;这与在基于Linux的系统上运行有点不同。
尝试以下方法:
docker-machine ip
这将返回虚拟机的IP。在我的例子中,它是
192.168.99.100
运行docker ps
将显示端口映射(清理下面的表格)
$ docker ps
CONTAINER ID IMAGE STATUS PORTS NAMES
42f88ac00e6f nginx-local Up 30 seconds 0.0.0.0:32778->80/tcp
0.0.0.0:32778->80/tcp
表示docker将我的计算机上的32778(一个随机分配的端口)映射到我的容器的端口80.
您也可以从docker port 42f88ac00e6f 80
获取此信息(42f88ac00e6f是容器ID或名称)
为了访问容器上的nginx,我现在可以使用虚拟机的ip:32778
http://192.168.99.100:32778/将转发到我的docker容器的80端口(我用它在本地进行测试)
显然,上面的端口将无法从网络访问,但您可以将防火墙配置为转发给它=)
答案 1 :(得分:13)
我建议将端口转发规则添加到VirtualBox VM设置。
打开VM设置=>网络标签=>适配器1.默认情况下,它连接到NAT 按端口转发按钮,然后添加新规则 主机IP应该是您的计算机IP地址。也可以是127.0.0.1,但只能在您的计算机上看到它 对于主机端口值,您需要进行一些实验 - 计算机防火墙需要未使用和允许 将访客IP留空 客人端口应为3000,如您的问题所示。
之后,应该可以从本地网络访问,地址http://HOST_IP:HOST_PORT
答案 2 :(得分:7)
您必须告诉本地计算机侦听该端口上的传入连接,然后将这些请求转发到您的docker容器。
Nginx非常擅长这个,并且这样的简单配置:
<强> /etc/nginx/sites-enabled/your-file.conf 强>
server {
listen 3000;
server_name YOUR_IP_ADDRESS;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
如果您的手机/平板电脑点击http://YOUR_IP_ADDRESS:3000/
答案 3 :(得分:0)
您应该可以使用book2docker ip
报告的IP地址访问boot2docker vm。
答案 4 :(得分:0)
对于MacOs用户。
似乎'D:\Usuarios\<MyUserName>
会神奇。
您可以从容器访问外部IP主机(10.254.254.254)