问题:网络未路由到主机。 例如:
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-way以docker-machine
为中心,这个事实我可能已经低估了。有趣的事实是,这是一个新的安装:这个构建脚本是我做的第一件事 - 我不知道网络是否真的有效。
问题:我如何诊断这些东西。我希望能够追踪流量丢失的确切位置,并相应地进行修复。
答案 0 :(得分:1)
您的命令行已反转端口:
docker run -tip 8080:80 httpd
首先是主机端口,带有可选的绑定接口,后跟容器端口。您还可以在docker ps
输出中看到主机上的端口80映射到容器内的端口8080。
有些问题是容器内的服务需要监听所有容器接口(0.0.0.0),而不是容器的localhost接口,否则代理不能转发流量。但是,官方图片的默认设置不会出现此问题,您的curl命令会显示不适用于您。