Docker for Mac のコンテナからホストのサーバにアクセスする
例えばコンテナのクロスGDBからホストの openocd へ接続するような場合
openocd.cfg に次のような行を追加しておいて
gdb_port 3333 telnet_port 4444
ホストでopenocdを起動して待機させておき,
コンテナ内から軽い気持ちで接続を試みると失敗.
$ telnet localhost 4444 Trying 127.0.0.1... Trying ::1... telnet: Unable to connect to remote host: Cannot assign requested address
そこで
qiita.com
とか
joppot.info
とかを参考に,lo0 へ alias を設定してみたが,それでも接続できない.
仕方がないので公式の情報を調べると
docs.docker.com
From 18.03 onwards our recommendation is to connect to the special DNS name host.docker.internal, which resolves to the internal IP address used by the host.
つまりバージョン18.03からは host.docker.internal という特別なホスト名の使用を推奨していて,これを使ってアクセスしたところ
$ telnet host.docker.internal 4444 Trying 192.168.65.2... Connected to host.docker.internal. Escape character is '^]'. Open On-Chip Debugger >
となり,接続することができた.