如何调试Mac上的Docker设置网络(可能是Hyperkit引起的问题)?

时间:2017-01-25 10:16:01

标签: macos networking docker virtualization macos-sierra

问题:网络未路由到主机。 例如:

docker run -tip 80:8080  httpd

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

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 ...

环境:新的,干净的操作系统安装 - OSX Sierra 10.12.2,Docker.app版本1.13.0稳定(再加上1.13.0.beta和1.12.0 beta也尝试了相同的结果)。

假设: Docker和OS之间存在一些问题。我猜这个'东西'是Hyperkit(对我来说就像一个黑盒子)。构建脚本可能会从这里打破一些设置:http://bigchaindb-examples.readthedocs.io/en/latest/install.html#the-docker-waydocker-machine为中心,这个事实我可能已经低估了。有趣的事实是,这是一个新的安装:这个构建脚本是我做的第一件事 - 我不知道网络是否真的有效。

问题:我如何诊断这些东西。我希望能够追踪流量丢失的确切位置,并相应地进行修复。

1 个答案:

答案 0 :(得分:1)

您的命令行已反转端口:

docker run -tip 8080:80 httpd

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

有些问题是容器内的服务需要监听所有容器接口(0.0.0.0),而不是容器的localhost接口,否则代理不能转发流量。但是,官方图片的默认设置不会出现此问题,您的curl命令会显示不适用于您。