Dockerコンテナからホストマシンへのアクセス方法
Dockerコンテナでホストにアクセスするには、以下の方法があります。
- ホストマシンのIPアドレスを使用:デフォルトでDockerはホストマシンのIPアドレスをコンテナのhostsファイルに追加し、ホストマシンのIPアドレスを直接使用してホストマシンにアクセスできます。たとえば、ホストマシンのIPアドレスが192.168.0.100の場合、コンテナ内でこのIPアドレスを使用してホストマシンにアクセスできます。
- Dockerでは、host.docker.internalという特別なホストIPアドレスが提供されており、Dockerコンテナ内でホストマシンへのアクセスに利用することができます。例えば、Dockerコンテナ内でping host.docker.internalを実行すると、ホストマシンとの接続を確認できます。
- ホストのネットワークインターフェースを使用する:コンテナの作成時に –network=host パラメータを使用した場合は、コンテナはそのホストのネットワークネームスペースを共有することになります。つまり、コンテナはホストのネットワークインターフェースに直接アクセスでき、あたかもホスト上で直接実行されているかのように機能します。
- Docker ホストネットワークを使用する: Docker ホストネットワークは特別なネットワークモードで、コンテナとホストマシーンが同じネットワークスタックを共有します。コンテナを作成するとき、–network=bridge パラメーターを使って Docker ホストネットワークを使用するように指定できます。コンテナはホストマシーンとネットワークを共有するため、ホストマシーンに直接アクセスできます。
ホストマシンに上述の方法でアクセスできるのはホストマシンのサービスポートがコンテナからアクセス可能であるという前提があることに留意してください。