【问题标题】:Equivalent of using a ssh tunnel相当于使用 ssh 隧道
【发布时间】:2017-02-01 00:38:08
【问题描述】:

使用虚拟主机而不是部署 Docker 容器,创建 ssh 隧道以便从本地机器访问分隔的机器是我的正常工作过程。例如,将我的 psql 客户端连接到一个 Postgres 实例,我只能通过堡垒机访问该实例。

有了 Docker,一切都变得更简单了。是否有类似的方法可以用 Docker 做同样的事情?通过 Docker 实例隧道到 RDS 实例?

【问题讨论】:

    标签: postgresql ssh docker rds ssh-tunnel


    【解决方案1】:

    您使用docker CLI 连接到正在运行的容器。比如……

    要登录到运行在容器中的数据库,您可以使用(从本地计算机)

    docker exec -it mypsqlcontainer psql -U username dbname
    

    我个人几乎从不需要 ssh 进入主机。一切都可以通过 docker CLI 完成。

    【讨论】:

    • 太好了,所以我还需要将它与查找 docker 容器 ID 的命令结合起来?
    • 如果您命名容器并使用名称而不是 id 会更容易。例如: docker run -d --name mysqlcontainer mysql:latest 然后你可以使用我上面的docker exec .. 行,而不必找出容器ID。当然,这仅在您拥有每个容器的 1 个实例时才有效。当您使用--scale 为给定服务创建多个容器时,您不能指定--name
    【解决方案2】:

    您可以通过 ssh-tunnel 连接到 docker 主机。 DB 端口必须可以从 docker 主机访问(即使用“-p” docker run 选项)。

    如果您不想发布 DB 端口,您可以使用 ssh 服务器创建 jumpbox 容器,在此容器上发布端口 22 和用户容器链接以链接 jumpbox 容器与 DB 容器。

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2018-07-20
      • 2011-02-07
      • 1970-01-01
      • 2011-06-30
      • 2011-12-14
      相关资源
      最近更新 更多