问题描述

假如,你的开发环境是用 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 文件新增的配置就会失效,故需要重新配置一下。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐