DockerコンテナからHostのlocalhostへ接続する
Dockerコンテナ内部からホストシステムのlocalhost上のサービスへ接続する方法。host.docker.internal
概要
Dockerコンテナ内部からHostへアクセスする方法について紹介する。
接続方法
Mac/Windows環境のDocker
MacやWindowsの場合、基本的にはDNS名 host.docker.internal により、コンテナ内部からHostへアクセスできる。
**コンテナからホストのサービスへ接続したい。**
ホストには変更されるIPアドレスがある、またはネットワークアクセス権限がない場合は存在しない。ホストで使用される内部IPアドレスへ解決される特殊なDNS名 `host.docker.internal` に接続することが推奨される。これは開発用であり、Docker Desktop外部の本番環境では動作しない。
`gateway.docker.internal` を使用してゲートウェイに接続することもできる。
**出典**: [Docker公式ドキュメント](https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host)
Linux環境のDocker
Linux用Dockerで host.docker.internal を使用するには、--add-host host.docker.internal:host-gateway を追加する必要がある。
例えば、次の通りである。
$ docker run \
-it \
--rm \
--add-host=host.docker.internal:host-gateway \
alpine \
cat /etc/hosts