自定义端口转发到docker集装箱

我在主机H1上有一个Docker容器C1,它公开了一个我无法通过docker run -p选项映射的端口。 我必须通过iptables来做端口转发。 我想出了以下规则。

 iptables -t nat -I DOCKER 1 -p tcp --dport $HOST_PORT -j DNAT --to-destination $CONTAINER_IP_ADDRESS:$CONTAINER_PORT 
  • 情况1:在H1上时,我可以用H1的IP telnet到C1。
  • 情况2:在C1上时,我无法用H1的IP telnet到C1。

我很好奇docker run -p如何docker run -p做转发,因为情况2使用该选项。 我已经分析了使用它时创build的iptables规则,但无法获得相同的结果。

现在我甚至开始在容器中做tcpdump,发现在自己做转发的时候,数据包被发送到H1,但是什么都没有回来。

任何人都可以告诉我什么docker工人使用转发选项时有什么不同?

编辑1:

使用端口映射是不可能的,因为Elastic Beanstalk V1不支持,我不能使用V2。

我正在做以下事情:

  • 情况1

    root@H1: telnet $HOST_IP $HOST_PORT

  • 案例2

    root@C1: telnet $HOST_IP $HOST_PORT