我正在使用码头工具。在docker里面我有app将侦听套接字绑定到外部机器的ip(我运行docker的机器的ip)。有什么方法可以使这样的侦听套接字工作?这是绑定到外部IP地址(192.168.1.2)而不是docker的eth0(172.17.0.248)
答案 0 :(得分:2)
当您运行容器时,将端口映射到要在其上访问的外部端口。 docker run -p 80:80 myapp
这将允许您访问192.168.1.2:80的docker容器。命令格式为-p {external port}:{internal app port}。
进一步澄清。要访问容器内的任何应用程序,您需要公开端口,请参阅this。基本上,您将端口从容器映射到主机o / s。
示例:您的容器中有一个在端口8080上运行的应用程序,但您希望在端口8000上使用主机IP访问它。您可以像docker run -p 8000:8080 myapp
那样运行您的应用程序。这将端口8080暴露给您的主机o / s作为端口8000,此时您可以在{host ip}:8000处访问它。
答案 1 :(得分:0)
好的修理自己: 通过" ip addr add"添加新的ip,然后使用iptable规则将传入的数据包预先路由到该ip,这就是全部:)