我正在尝试构建一个已转发端口的容器,以便容器中运行的代码可以访问远程数据库。 所以我把行
CMD ssh -L 27017:localhost:27017
在我的dockerfile中然后运行它,但在任何情况下我都看不到端口转发(我尝试RUN而不是cmd,并尝试交互式运行容器或使用-d,但在前一种情况下我没有转发,在后一种情况下,容器在启动后很快就会退出,即使在将&& / bin / bash添加到ssh命令的末尾之后也是如此。 我成功做到这一点的唯一方法是进行交互式运行
$docker run -it --name cont_name im_name /bin/bash
然后从交互式shell执行端口转发所需的ssh(现在绑定shell)。然后从我本地主机上的另一个窗口,我'使用
进入第一个容器$ docker exec -it cont_name bash
我现在确实看到了转发的端口。有没有更好/自动的方法来做到这一点? “屏幕”似乎是在容器中运行的麻烦。
答案 0 :(得分:2)
我认为您要做的是将端口从容器“绑定”到主机。首先,您需要知道的是端口是否已通过您计划使用的docker容器中的EXPOSE
公开。接下来就是将其添加到docker run...
:
-p 127.0.0.1:3360:3306
假设它是您正在使用的mysql实例,公开的端口是3306,因此您可以将其绑定到同一端口上的主机或您在主机上喜欢的任何端口。