项目地址: https://github.com/shynome/dcip
用例: 主机上用 Docker 搭建的 Postgres 数据库, 因为安全问题未暴露外部可访问的端口, 这下该怎么进行数据库的管理呢? 我经过一番搜索发现每个容器都有一个 17.17.0.x/16 的 IP 用于和主机通信, 可以直接访问这个 IP 进行管理, 但要在本地管理的话就要通过 SSH 端口转发到本地, 于是就会变得很繁琐:
docker network inspect bridge --format '{{range $k,$c:=.Containers}}{{$k}}/{{.IPv4Address}}{{println}}{{end}}'
grep $(docker ps --latest -q --no-trunc --filter='name=postgres')
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
获取主机上的容器 IPdcip of postgres
获取本机上的容器 IPdcip export [email protected] postgres:5432
将主机上的容器端口暴露到本地