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:记录一下,免得下次又找半天。