V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shynome
V2EX  ›  Docker

一个 用于获取 Docker 容器与主机通信的 IP 和 转发容器端口到本地 的工具

  •  
  •   shynome · 2021-05-12 09:30:43 +08:00 · 795 次点击
    这是一个创建于 1290 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: https://github.com/shynome/dcip

    用例: 主机上用 Docker 搭建的 Postgres 数据库, 因为安全问题未暴露外部可访问的端口, 这下该怎么进行数据库的管理呢? 我经过一番搜索发现每个容器都有一个 17.17.0.x/16 的 IP 用于和主机通信, 可以直接访问这个 IP 进行管理, 但要在本地管理的话就要通过 SSH 端口转发到本地, 于是就会变得很繁琐:

    1. ssh 连接上主机找出容器 IP:
      1. 找出所有容器的 IP docker network inspect bridge --format '{{range $k,$c:=.Containers}}{{$k}}/{{.IPv4Address}}{{println}}{{end}}'
      2. 过滤出对应容器的 IP grep $(docker ps --latest -q --no-trunc --filter='name=postgres')
    2. 进行端口转发 ssh -NT -L 0.0.0.0:5432:172.17.0.2:5432 [email protected]

    这字也太多了, 所以我写了这个程序把上面的命令简化成了 dcip of [email protected] postgres

    用法:

    • dcip of [email protected] postgres 获取主机上的容器 IP
    • dcip of postgres 获取本机上的容器 IP
    • dcip export [email protected] postgres:5432 将主机上的容器端口暴露到本地

    项目地址: https://github.com/shynome/dcip

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:42 · PVG 10:42 · LAX 18:42 · JFK 21:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.