问题描述
假如,你的开发环境是用 Docker 搭建的,当用 CURL 来访问局域网内另外一台服务器的 API 时,会出现域名无法解析的情况。
出现类似下面的错误提示信息:
cURL error 6: Could not resolve host
Couldn't resolve host. The given remote host was not resolved.
原因是 Docker 容器无法解析局域网内的域名,就算你配置了本地主机的 hosts 域名映射也不行。Docker 环境不同于 wamp 或 xampp,对于局域网内的域名解析,Docker 需要到 Docker 容器中配置 hosts 文件。
解决方法
进入 Docker 容器后,在 hosts 文件中,配置域名解析。
# 进入 docker 容器
docker exec -it my_web /bin/bash
# 修改 hosts 文件
vi /etc/hosts
# 添加域名解析规则
192.168.99.100 example.test
# 或者,直接追加字符串到指定的文件末尾
echo '192.168.99.100 example.test' >> /etc/hosts
保存退出后,利用 ping 命令验证一下,是否可以 ping 通。
docker-machine.exe ssh default
ping example.test
需要注意的是:每次重启容器(服务)后,容器中的 /etc/hosts 文件新增的配置就会失效,故需要重新配置一下。