docker集装箱公开的远程访问服务

我写了一个监听tcp 9999和udp 9966的simiple程序,并将程序包装到docker容器中,如下所示:

FROM jeanblanchard/busybox-java ADD testprg /opt/testprg EXPOSE 9999 EXPOSE 9966/udp ENTRYPOINT ["/opt/testprg/start.sh"] 

然后像这样运行docker:

 docker run -d -P testprg 

docker ps -a结果(PORTS部分):

 0.0.0.0:14355->9966/udp, 0.0.0.0:14337->9999/tcp 

一切看起来不错,我可以telnet到localhost 14337并获得响应,但不是从远程机器。 我试过使用lsof -i :14337netstat -nat | grep docker netstat -nat | grep docker ,什么都没有。

我也尝试添加这样的iptable路由:

 sudo iptables -t nat -A PREROUTING -i 192.168.1.101 -p tcp --dport 14355 -j REDIRECT --to-port 9999 

另外,远程机器什么都没有。 所以,我的问题是,如何将我的程序暴露的端口redirect到我的主机之外?

哈哈,对不起,我的错误,我的远程机器不在我的主机在同一个networking,这个configuration就像一个魅力。