Linuxの話です。WindowsやMacでは以下の設定は不要らしい。
Docker単体で使う場合とDocker Composeを使う場合の2パターンを解説。
共通事項
以下の設定でhost.docker.internal
がホストのアドレスに解決される。よってコンテナ内のプロセスからこのドメイン名に接続するとコンテナ外のホストのプロセスに接続できる(ホストは0.0.0.0
等のアドレスで待ち受ける必要あり)。
Docker単体で使う場合
docker run --add-host host.docker.internal:host-gateway IMAGE
解説
--add-host
でコンテナ内の/etc/hosts
にエントリを追加できる。ここでhost-gateway
を名前解決先に指定するとホストのアドレスにしてくれる模様。
Docker Composeを使う場合
services:
SERVICE:
image: IMAGE
extra_hosts:
- host.docker.internal:host-gateway
解説
extra_hosts
でコンテナ内の/etc/hosts
にエントリを追加できる。ここでhost-gateway
を名前解決先に指定するとホストのアドレスにしてくれる模様。
あとがき
Docker Composeの場合はよく解説されているが、Docker単体の場合はあまり出てこなかったので一応書いた記事。