Podman中pasta网络模式下两容器端口互通的简便实现方法(无需Pod)
解决pasta网络模式下容器间通信的简便方法
针对你在pasta网络模式下无法让app和db容器通信的问题,这里提供两种无需使用Pod的简便方案:
方案1:定向端口转发(推荐)
这种方法不需要暴露数据库端口到主机,仅在app容器内部实现转发:
- 先启动
db容器(使用pasta网络模式),然后获取它的内部IP:
假设得到的IP是docker inspect db --format '{{ .NetworkSettings.Networks.pasta.IPAddress }}'10.0.0.2 - 启动
app容器时,在pasta参数中添加端口转发规则,将容器内部的3306端口转发到db容器的3306端口:docker run --network=pasta:-L,3306:10.0.0.2:3306 ... app-image - 此时在
app容器内,直接访问localhost:3306就能连接到db容器的数据库服务。
方案2:利用主机iptables打通容器间路由
如果需要容器直接通过IP互相访问,可以通过主机的iptables添加规则:
- 获取
app和db容器的内部IP(步骤同方案1) - 在主机上添加两条iptables规则,允许两个容器的IP互相通信:
iptables -A FORWARD -s <app-ip> -d <db-ip> -p tcp --dport 3306 -j ACCEPT iptables -A FORWARD -s <db-ip> -d <app-ip> -p tcp --sport 3306 -j ACCEPT - 之后
app容器就能直接通过<db-ip>:3306访问数据库服务。
这两种方案都避免了将数据库端口映射到主机,且操作比你当前使用的-T参数更简洁。
内容的提问来源于stack exchange,提问作者HomeIsWhereThePcIs
相关产品推荐
相关产品推荐

