从iOS模拟器访问docker容器

Mic*_*hal 6 ios-simulator docker boot2docker

我正在使用boot2docker来运行Docker镜像.我非常清楚我需要访问boot2docker的IP地址才能访问Docker容器.

基本上在终端是 curl $(boot2docker ip):49155

当我在Chrome或Safari中这样做时,一切似乎都很好.当我在iOS模拟器(iOS 8)中的Safari浏览器中输入地址时,我收到消息:由于网络连接丢失,Safari无法打开页面.

我尝试运行一些其他localhost-ish应用程序 - SimpleHTTPServer在Python中,可访问通过0.0.0.0:4000,似乎工作得很好(网站加载在iOS模拟器中).

这是Docker/iOS模拟器中的错误还是我必须做一些额外的设置?

Nat*_*rot 5

boot2docker是在您的计算机上运行的VM.你的Mac是"主机",boot2docker机器是"客户".iOS模拟器也是"访客".

客户机可以通过多种方式获取其网络访问权限.boot2docker被设置为使用NAT,这实际上意味着你可以来宾任何地方,但你只能得到从您的主机的客人.iOS模拟器不是主机(它有自己的IP地址和自己的网络接口),因此无法访问boot2docker来宾.

最简单的解决方法是进行端口转发.boot2docker的说明建议类似

boot2docker ssh -L 49155:localhost:49155
Run Code Online (Sandbox Code Playgroud)

这会导致主机上的端口49155(当前无效)将所有连接转发到boot2docker guest虚拟机上的端口49155.

现在,从iOS模拟器,您可以像访问主机一样访问您的服务器:0.0.0.0:49155.如果您使用物理iOS设备,则需要获取Mac的外部IP地址并使用它.

像这样的端口转发的替代方案是使用Vagrant自己设置VM(运行boot2docker或CoreOS或任何最近的Linux)并让该VM使用"桥接"网络(这使得访客可以从主机外部访问).