podman-compose や docker-compose から podman を使用していて、network を共有しているはずなのに、あれれ隣のコンテナにサービス名でアクセスできないぞって時の話。
OSはRHEL8で podman は下記の環境で確認しました。
$ podman version
Version: 3.2.3
API Version: 3.2.3
Go Version: go1.15.7
Built: Tue Jul 27 03:29:39 2021
OS/Arch: linux/amd64
podman-plugin が入ってるかどうか
podman v3 はデフォルトでコンテナ間の通信をサービス名でできないらしく、dnsname というプラグインが必要だそう。下記のコマンドで入れます。
dnf install podman-plugins
.dns.podman
domain を付けてアクセスしてみる
大体のケースは先述の plugin で解決すると思うのですが、特定のコンテナでのみ、他コンテナにアクセスできないことがありました。
# wget http://node-exporter:9100/metrics
wget: bad address 'node-exporter:9100'
ですが、 .dns.podman
domain を付与してアクセスしたところアクセスできることができました。
# wget http://node-exporter.dns.podman:9100/metrics
Connecting to node-exporter.dns.podman:9100 (10.88.2.53:9100)
saving to 'metrics'
よく見ると、plugin の README にも記載されていました
sudo podman run -dt --name web --network foobar quay.io/libpod/alpine_nginx:latest
5139d65d22135e9ecab511559d863754550894a32285befd94dab231017048c2
↓ここ
sudo podman run -it --name client --network foobar quay.io/libpod/alpine_nginx:latest curl http://web.dns.podman/
podman rulez
ググってもあまり出てこなかったので、メモしておきます