Docker 容器访问宿主机的服务

开篇的话

自从用上了 Docker,各种环境搭建简直轻松得不行。最近,在本地(Windows 10)构建一个 Docker 镜像,需要进行简单的测试。镜像实例化之后,需要访问宿主机的 MySQL 服务。

用 localhost 或者 127.0.0.1 显然是不行的,容器会尝试访问自身,而非宿主机。网上众说纷云,但是没有看到一种对胃口的方法。

解决方法

最后查阅了 官方文档,里面说详细说明。

I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST

The host has a changing IP address (or none if you have no network access). 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. This is for development purpose and will not work in a production environment outside of Docker for Windows.

The gateway is also reachable as gateway.docker.internal.

大意就是,宿主机的 IP 是变化的。从 18.03 版本开始,推荐使用 host.docker.internal 访问宿主机的,不过仅建议使用在开发环境中。同样,还可以通过 gateway.docker.internal 访问网关。

MARK:记录一下,免得下次又找半天。