在Podman中,大部份的情況是將Container的Port暴露給Host,由Host連線進Container中的服務,可以簡單用 --port 8080:80 的參數來將Container的 80 port 服務開在Host的 8080 port上。
但如果要從Container中連線到Host就沒有這麼容易了,目前找到有兩種方法
1.
--network host
如果使用這個方法,在Container裡可以直接使用localhost來連線Host的所有Port,Host也會將來自Container的連線看成是localhost發出的。
如果Host上有服務會因為來源IP不同而有不同行為的話就要注意安全性問題,像是PostgreSQL預設如果從localhost連線就不需要密碼
2.
--network slirp4netns:allow_host_loopback=true
使用這個方法,Podman會在Container的/etc/hosts中加入類似以下內容
192.168.0.2 host.containers.internal host.docker.internal
在Container中就可以使用 host.containers.internal 或 host.docker.internal 來連線到Host,而Host則會把這些連線當作是外部來的連線處理