从容器内部访问主机

时间:2019-11-03 09:46:50

标签: podman

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

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

实现此目标的最佳方法是什么?也许已经为容器主机定义了默认主机名?

1 个答案:

答案 0 :(得分:0)

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

例如,如果我的主机上的端口8080上运行着Web服务器...

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

我可以在该地址上连接到Web服务器:

/ # 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也是如此-必须配置您的主机防火墙,以使其不会阻止来自容器的入站连接。