Dockerコンテナ内にhost.docker.internalが適用されているかを確認する方法

公開日:
目次

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の設定が正しく行われていることを確認できます。