いつ使うのか?
Dockerコンテナを開発環境として、コンテナのホストOSで動いているサービスと通信したいときに、コンテナ内部からホストにアクセスするためのIPアドレスを調べる。
以下は、下記のDockerfileからビルドしたコンテナを具体例として説明する。
FROM ruby:2.6
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN apt-get update -qq && \
apt-get install -y vim
docker build --tag example-ruby-dev .
方法
OS X/Winの場合
公式のドキュメントによって、DockerのバージョンがCEの18.03以上の場合、"host.docker.internal"といったDNS名でデフォルトで設定されて。そうすると、下記のコマンドを使って、コンテナを立ち上げた上で、"Ping -a host.docker.internal"などの方法で、ホストのIPアドレスを調べる。
docker container run -it example-ruby-dev /bin/bash
Linuxの場合
Linux版のDockerでは、上述のようなデフォルト設定がまだないので、上記のコマンドを使って、コンテナを立ち上げた上で、以下のコマンドで、ホストのIPアドレスを調べる。
ip route show default | awk '/default/ {print $3}'
後書
ホストにアクセスするIPアドレスをDockerから発行することではなく、最初から特定な値で指定したい場合、@ijufumiさんの記事で述べた設定方法を参考してください。