如何在Mac上debuggingDocker设置的networking(可能是Hyperkit导致的问题)?

问题:networking没有路由到主机。 例如:

docker run -tip 80:8080 httpd 

不会导致Apache主机上的localhost:8080或docker.local:8080或类似的东西。 如果我尝试从内部连接,容器工作正常:

 docker run -ti debian curl 172.17.0.2 <html><body><h1>It works!</h1></body></html> 

看来在Docker方面本身就是一切都好。 在docker ps你得到: ... 80/tcp, 0.0.0.0:80->8080/tcp ... : ... 80/tcp, 0.0.0.0:80->8080/tcp ...

环境:新的,干净的操作系统安装 – OSX Sierra 10.12.2,Docker.app版本1.13.0稳定(加上1.13.0。testing版和1.12.0testing版以及相同的结果)。

假设:在Docker和OS之间有一些东西被破坏了。 我猜这个“东西”是Hyperkit(对我来说就像一个黑盒子)。 可能会有一些设置从这里构build脚本中断: http : //bigchaindb-examples.readthedocs.io/en/latest/install.html#the-docker-way这是docker-machine为中心,事实上,我可能低估。 有趣的事实是,这是一个新的安装:这个构build脚本是我做的第一件事 – 我不知道之前的networking实际上是否工作。

问题:我如何诊断这个东西。 我希望能够跟踪stream量在哪里丢失,并相应地修复。

你的命令行反转了端口:

 docker run -tip 8080:80 httpd 

首先是主机端口,带有可选的绑定接口,接着是容器端口。 您还可以看到,在docker ps输出中,主机上的端口80映射到容器内的端口8080。

另一个问题是容器内的服务需要监听所有容器接口(0.0.0.0),而不是容器的本地主机接口,否则代理不能转发stream量。 但是,官方图像的默认设置不会有这个问题,你的curl命令显示不适用于你。