docker集装箱内的docker转发

我正在试图获得一个有端口转发的容器,例如在容器中运行的代码可以访问远程数据库。 所以我把这条线

CMD ssh -L 27017:localhost:27017 

在我的docker文件,然后运行它,但在任何情况下,我看不到端口转发(我尝试运行而不是CMD,并尝试以交互方式运行容器或使用-D,但在前一种情况下,我没有转发和后一种情况下,即使在将&& / bin / bash加到ssh命令结束之后,容器也会在启动后立即退出)。 我成功做到这一点的唯一方法是进行交互式运行

 $docker run -it --name cont_name im_name /bin/bash 

然后从交互式shell执行端口转发所需的ssh(现在将shell连接起来)。 然后从我的本地主机的另一个窗口,我'进入'第一个容器使用

 $ docker exec -it cont_name bash 

我现在确实看到端口转发。 有没有更好的/自动的方式来做到这一点? “屏幕”似乎是一个容器中运行的麻烦。

我认为你想要做的是“绑定”端口从容器到主机。 首先,您需要知道的是,如果端口已经通过您计划使用的docker容器中的EXPOSE公开EXPOSE 。 接下来的事情是将这个添加到docker run...

 -p 127.0.0.1:3360:3306 

假设这是一个你正在使用的mysql实例,所公开的端口是3306,所以你可以将它绑定到同一个端口上的主机,或者你希望在主机上的任何端口。