【问题标题】:Accessing host from inside container从容器内部访问主机
【发布时间】:2020-02-28 22:00:21
【问题描述】:

我想要完成的是连接到安装在主机系统上的数据库。现在有一个similar question already for docker,但我无法让它与 Podman 一起工作,我想是因为网络在这里的工作方式有点不同。

到目前为止,我的解决方案是使用 --add-host=dbhost:$(ip route show dev cni-podman0 | cut -d\ -f7),但我不确定这是一个好主意,并且在使用不同的网络时它不会起作用。

实现这一目标的最佳方法是什么?是否已经定义了容器主机的默认主机名?

【问题讨论】:

    标签: podman


    【解决方案1】:

    使用 podman 的解决方案与 the answer to which you provided a link 中描述的相同:容器内可见的默认路由可用于连接主机服务(假设它们正在侦听所有地址或显式绑定到 podman 网桥)。

    例如,如果我在主机的 8080 端口上运行了一个网络服务器...

    darkhttpd . --port 8080
    

    我可以启动一个容器:

    $ sudo podman run -it --rm alpine sh
    

    如果我获得默认网关的地址,则在该容器内:

    / # ip route
    default via 10.88.0.1 dev eth0
    10.88.0.0/16 dev eth0 scope link  src 10.88.0.42
    

    我可以连接到该地址上的网络服务器:

    / # wget -O- http://10.88.0.1:8080/hello.txt
    Connecting to 10.88.0.1:8080 (10.88.0.1:8080)
    Hello world
    -                    100% |***************************************|    12  0:00:00 ETA
    

    唯一需要注意的是——对于 Docker 也是如此——你的主机防火墙必须配置为不会阻止来自容器的入站连接。

    【讨论】:

    • 谢谢,但我一直在寻找更通用的解决方案 - 在这种情况下,我的容器将依赖于主机,但如果我可以访问主机名并且它可以具有灵活性,那就太好了可以是主机、另一台服务器或容器。
    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2019-05-12
    • 2021-07-02
    • 2019-05-28
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多