Dockerコンテナ内からホスト側ポートにアクセス
DNS名 host.docker.internal を使うと、コンテナ内からホストにアクセスできるIPが得られるので、これでホスト側の任意のポートにアクセスする
docker run --add-host ... または docker-composeのextra_hosts で任意の名前とIPの組合せを指定する ホスト側のIPアドレスを知っておく必要がある
参考
Linuxの場合
code:shell
$ docker run -it --add-host=host.docker.internal:host-gateway image
root@7829011183a6:/# cat /etc/hosts
127.0.0.1 localhost
...
172.17.0.1 host.docker.internal
172.20.0.7 7829011183a6
code:compose.yml
services:
app:
extra_hosts:
- "host.docker.internal:host-gateway"
参考
Docker version 20.10.0 以前
host networkモードで起動し、コンテナにIPアドレスを割り当てずにホスト上のportを直接開く
docker run --network host ...
参考
docker compose でも可能
コンテナ間通信もhost経由で行うことになる
code:compose.yml
services:
app:
network_mode: "host"