7

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

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

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

4

1 回答 1

4

podman 的解决方案与您提供链接的答案中描述的相同:容器内可见的默认路由可用于连接到主机服务(假设它们正在侦听所有地址或显式绑定到 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 也是如此——你的主机防火墙必须配置为不会阻止来自容器的入站连接。

于 2019-11-04T13:07:48.573 回答