Edited at

Docker for Macでコンテナからホストのサーバに接続する


概要

Dockerのコンテナの中からホスト(macOS)に接続したい場合、 host.docker.internal を使えばアクセスできます。

https://docs.docker.com/docker-for-mac/release-notes/#docker-community-edition-18030-ce-mac59-2018-03-26


DNS name host.docker.internal should be used for host resolution from containers. Older aliases (still valid) are deprecated in favor of this one. (See https://tools.ietf.org/html/draft-west-let-localhost-be-localhost-06).



動作確認

$ docker run -d -p 80:80 --name webserver nginx # nginxのサーバを立ち上げる

$ wget -O - http://localhost # localhostでつながる
$ docker run -it alpine sh # 適当なコンテナ立ち上げて中に入る

以下コンテナ内で実行

# wget -O - http://localhost # localhostではつながらない

# wget -O - http://host.docker.internal # これでつながる