Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux docker将套接字绑定到外部端口_Linux_Sockets_Networking_Docker - Fatal编程技术网

Linux docker将套接字绑定到外部端口

Linux docker将套接字绑定到外部端口,linux,sockets,networking,docker,Linux,Sockets,Networking,Docker,我在用docker。在docker内部,我有一个应用程序可以将监听套接字绑定到外部机器的ip(我让docker运行的机器的ip)。我有什么办法可以让这种监听插座工作吗?当您运行容器时,它绑定到外部ip地址(192.168.1.2),而不是docker的eth0(172.17.0.248)将端口映射到您想要访问它的外部端口docker run-p 80:80 myapp这将允许您访问192.168.1.2:80处的docker容器。命令格式为-p{external port}:{internal

我在用docker。在docker内部,我有一个应用程序可以将监听套接字绑定到外部机器的ip(我让docker运行的机器的ip)。我有什么办法可以让这种监听插座工作吗?当您运行容器时,它绑定到外部ip地址(192.168.1.2),而不是docker的eth0(172.17.0.248)

将端口映射到您想要访问它的外部端口<代码>docker run-p 80:80 myapp这将允许您访问192.168.1.2:80处的docker容器。命令格式为-p{external port}:{internal app port}

请进一步澄清。要访问容器中要公开端口的任何应用程序,请参阅。实际上,您将一个端口从容器映射到主机o/s

示例:您的容器中有一个在8080端口上运行的应用程序,但您希望使用8000端口的主机ip访问它。你可以像docker run-p 8000:8080 myapp那样运行你的应用程序。这将把端口8080作为端口8000暴露给您的主机o/s,此时您可以在{host ip}:8000处到达它。

好的,我自己修复了:
通过“ip addr add”添加新ip,然后制定iptable规则将传入数据包预先路由到该ip,仅此而已:)

是,但我必须将docker内的套接字绑定到172.17.0.2:80,而不是192.168.1.2:80@JaniBaramidze不,实际上应该将它绑定到
0.0.0.0:80
,让端口转发发挥它的魔力。你不能绑定到一个对你的本地主机来说不是本地的IP地址。我们不能对它做一些“黑客”的事情来让它工作吗?因为我无法更改将其绑定到外部ipcan的程序的源代码,所以您可以明确说明您正在尝试做什么以及如何设置它吗?如果要向主机o/s公开容器端口。您只需要使用-p命令就可以通过主机ip访问它。@JaniBaramidze您不能做不可能的事情。但是,也不可能相信源代码已经硬连接到它里面了
172.17.0.2:80
。假设你陈述了你真正的问题?