【问题标题】:portforwarding from within docker container从 docker 容器内进行端口转发
【发布时间】:2015-08-18 11:11:35
【问题描述】:

我正在尝试构建一个具有转发端口的容器,以便容器中运行的代码可以访问远程数据库。 所以我把这条线

CMD ssh -L 27017:localhost:27017

在我的 dockerfile 中然后运行它,但在任何情况下我都看不到转发的端口(我尝试了 RUN 而不是 cmd,并尝试交互地运行容器或使用 -d ,但在前一种情况下我没有转发,在后一种情况下,容器在启动后很快退出,即使在 ssh 命令的末尾加上 && /bin/bash 也是如此)。 我成功的唯一方法是进行交互式运行

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

然后从交互式 shell 执行端口转发所需的 ssh(现在绑定了 shell)。然后从本地主机上的另一个窗口,我使用“进入”第一个容器

$ docker exec -it cont_name bash 

我现在确实看到了 ports forwarded 。有没有更好/自动的方法来做到这一点? 'screen' 在容器中运行似乎很麻烦。

【问题讨论】:

    标签: docker portforwarding


    【解决方案1】:

    我认为您想要做的是将端口从容器“绑定”到主机。您需要知道的第一件事是端口是否已通过您计划使用的 docker 容器中的EXPOSE 公开。接下来是将其添加到docker run...

    -p 127.0.0.1:3360:3306
    

    假设它是您正在使用的 mysql 实例,公开的端口是 3306,因此您可以将其绑定到主机上的同一端口或主机上您喜欢的任何端口。

    【讨论】:

    • 我会尝试但不抱希望,因为我不关心主机->容器端口转发,我想要容器->远程端口转发。
    • 我会小心打开主机外部的端口,将其从容器保存到主机,而不是从那里做你喜欢的事,这只是我的看法。
    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多