目次
Dockerを活用して開発を進めている中で、ローカル環境のAPIにDockerコンテナのアプリからアクセスしたいと思う場合があります。
Linux(Ubuntu)を使っている際に、このような状況に直面しました。
そこでhost.docker.internal
を利用して解決しましたが、設定が正しくできているか確認する方法を見つけるのに時間がかかりました。このプロセスを備忘録として残し、同じ問題に直面するかもしれない他の人の助けになればと思います。
Dockerコンテナに入る
まず第一に、host.docker.internal
はDockerコンテナ内の設定なので、対象のDockerコンテナに入る必要があります。これを行うには、以下の手順に従います。
コンテナIDを取得する
コンテナIDを取得するために、以下のコマンドを実行します。
sudo docker container ls -a
このコマンドを実行すると、利用可能なコンテナの一覧が表示されます。host.docker.internal
を設定しているコンテナのCONTAINER IDをメモしてください。このIDは、コンテナの一覧の中で最も左に位置しています。
コンテナ内に入る
次に、以下のコマンドを実行して、コンテナに入ります。
sudo docker container exec -it [コンテナID] /bin/sh
このコマンドによって、指定したコンテナのシェルにアクセスできます。
Dockerコンテナの/etc/hostsを見る
コンテナに入った後、/etc/hosts
ファイルを確認することで、ホスト名とIPアドレスの対応を確認できます。このファイルは、ホスト名とIPアドレスの対応が記載されている重要なファイルです。
コンテナ内で以下のコマンドを実行します。
cat /etc/hosts
このコマンドにより、/etc/hosts
ファイルの内容が表示されます。ここで、ファイルの右側の列にhost.docker.internal
が表示されていれば、Dockerにhost.docker.internal
の設定が正しく行われていることを確認できます。