エンジニアのひよこ_level10

【毎日更新!】新卒3年目エンジニアブログです!

【Docker】コンテナ内から、PC本体へアクセスをするホスト名【628日目】

dockerコンテナ内から、PC本体へアクセスをしたい!

Dockerで test-php-fpm みたいな名前でphp-fpmのコンテナ立てた。

手持ちのPCから、test-php-fpmにアクセスするのは良い。

だけど、コンテナの中から手持ちのPCにアクセスするには?
今回のコンテナの中とは、 docker exec -it test-php-fpm bashなどのコマンドを入力する等で、
コンテナ内部から通信を行うというのを想定しています。

ホスト名は host.docker.internal

内部からPCに向かってアクセスするipアドレスはなんだろう。ホスト名はなんだろう。

そう考えたときに、すでにdockerには共通で使えるホスト名があります。

それが host.docker.internal

このホスト名は、コンテナ内部から手持ちのPCに対するホスト名です。

curlでチェックしてみる

curl host.docker.internal

こうすることで、アクセスを試してみましょう。

通常の手元のPCのターミナルから上記コマンドを入力しても、該当するホストがわからないと出てきます。
docker exec -it test-php-fpm bashを入力して、コンテナ内のbashに接続したら、再度上記のコマンドを打ちましょう。

すると、データが取得出来るはずです。

何が嬉しい?

例えば、 xdebugなどでコンテナ内部から手元のPCに向かって通信をしたいときとかは、
ホスト名などがないと、通信をどこにすればいいかわかりません。

そんなときに、上記のホスト名を使いましょう。すると、手元のPCに向かって通信が出来るので、
問題なくリモート操作が可能になります。