メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

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
> 

となり,接続することができた.