Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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_Docker_Iptables - Fatal编程技术网

Linux Docker容器内的动态侦听端口

Linux Docker容器内的动态侦听端口,linux,docker,iptables,Linux,Docker,Iptables,我有一个应用程序,在使用其默认端口进行一些连接后,它开始打开(侦听)新的随机端口以处理现有连接,然后丢弃它们(视频呼叫) 它还在通信协议内交换IP地址和端口,我能够解决IP地址问题,但仍然无法找到一种方法,在Docker容器内打开主机的IPTABLES时,动态地告诉它们打开相同的端口,有人有什么想法吗?使用--net=host选项,对于docker run命令,应该启用您正在寻找的行为——注意,它被认为是不安全的,但我真的看不到任何其他这样做的方法 请参阅docker run手册页: --

我有一个应用程序,在使用其默认端口进行一些连接后,它开始打开(侦听)新的随机端口以处理现有连接,然后丢弃它们(视频呼叫)

它还在通信协议内交换IP地址和端口,我能够解决IP地址问题,但仍然无法找到一种方法,在Docker容器内打开主机的IPTABLES时,动态地告诉它们打开相同的端口,有人有什么想法吗?

使用
--net=host
选项,对于
docker run
命令,应该启用您正在寻找的行为——注意,它被认为是不安全的,但我真的看不到任何其他这样做的方法

请参阅
docker run
手册页:

   --net="bridge"
      Set the Network mode for the container
                                  'bridge': create a network stack on the default Docker bridge
                                  'none': no networking
                                  'container:<name|id>': reuse another container's network stack
                                  'host': use the Docker host network stack. Note: the host mode gives the container full access to local system services  such  as  D-bus
   and is therefore considered insecure.
                                  '<network-name>|<network-id>': connect to a user-defined network
--net=“桥”
设置容器的网络模式
“网桥”:在默认Docker网桥上创建网络堆栈
“无”:无网络
“容器:”:重用另一个容器的网络堆栈
“主机”:使用Docker主机网络堆栈。注意:主机模式允许容器完全访问本地系统服务,如D-bus
因此被认为是不安全的。
“|”:连接到用户定义的网络

您正在执行什么命令来启动容器?谢谢,它通过在容器内提供主机网络解决了问题。这听起来像是一个解决方案,但是,在考虑可伸缩性时,运行多个相同的容器实例将不起作用,因为端口正在使用中,除非容器在不同的IP上运行。