Dockerコンテナ内の名前解決をプライベートIPアドレスにする
- Docker Engine 24.0
- Docker Compose 2.21
プライベートDNSを運用しているネットワークで、
Dockerコンテナからネットワーク内の別のホストに通信したいとき、
デフォルトではGoogle Public DNS8.8.8.8
でホスト名がグローバルIPアドレスに解決されるため、
ISPやCloudflare Tunnelなどの外部を経由して通信することになり、非効率で危険な通信経路になります。
また、IPアドレスによるアクセス制限を設けている場合、 プライベートIPアドレスがソースとなる通信になるように通信経路を制御したい場合があります。
以下の設定により、コンテナ内でexample.com
が192.168.0.50
に解決されるようになります。
Docker
sudo docker run --rm --add-host "example.com:192.168.0.50" hello-world
Docker Compose
services:app:image: hello-worldextra_hosts:- "example.com:192.168.0.50"