使用简单的 iptable 规则从主机外访问容器是很常见的,这些规则将主机上的端口转发到容器上的端口,其中容器内部 IP 在手
-A PREROUTING -d 1.2.3.4/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.4.10:80
因此公共 IP 1.2.3.4 将路由到容器。使用适当的 dns 记录,也可以将 FQDN(例如:test.example.com)指向此容器。到目前为止,一切都运行良好。
但是在主机或同一主机上的相邻容器中,FQDN 是无用的,并且不会路由到该容器。
目前,肮脏的方法是将 FQDN 指向/etc/hosts
主机和所有邻居容器的容器私有 IP。但我认为有更清洁的方法可以做到这一点。
任何人都可以帮忙吗?
更新 1:
经过大量的尝试和错误,只为主机得到了这个。通过在上述规则之外设置它,它将数据包从主机路由到该 FQDN 到容器
iptables -A OUTPUT -d 1.2.3.4/32 -j DNAT --to-destination 10.0.4.10 -t nat
但 nieghbor 容器仍然无法使用该 FQDN。