我一直在关注这些教程并且已经使用Docker进行了几天的试验,但我找不到任何“真实世界”的用法示例..
我如何从外面与我的容器沟通?
我能找到的所有示例都以一个或多个容器结束,它们可以与其他人共享端口,但主机外部没有人可以访问其公开的端口。
拥有这样的容器的重点不在于,至少有一个容器需要从外面进入吗?
我找到了一个名为pipework(https://github.com/jpetazzo/pipework)的工具,它可能会帮助我解决这个问题。但是,这是每个人都在测试Docker生产他们正在使用的工具吗?
让外面与我的容器交谈需要“黑客”吗?
答案 0 :(得分:5)
您可以使用参数-p
将容器的端口公开给主机。
例如:
sudo docker run -p80:8080 ubuntu bash
将容器的端口8080绑定到主机的端口80上。
因此,您可以使用主机的URL从外部访问您的容器:
http://you.domain -> losthost:80 -> container:8080
那是你想做的吗?或许我错过了一些东西
(参数-expose
仅将端口暴露给其他容器(不是主机))
答案 1 :(得分:3)
这篇(https://blog.codecentric.de/en/2014/01/docker-networking-made-simple-3-ways-connect-lxc-containers/)博客文章解释了问题和解决方案。
基本上,看起来管道工程(https://github.com/jpetazzo/pipework)是将容器端口暴露到外面的方式...希望这很快就会集成......
更新:在这种情况下,iptables应该受到指责,并且有一条规则可以阻止转发的流量。添加-A FORWARD -i em1 -o docker0 -j ACCEPT
解决了它..