宿主可以访问公网 Docker容器里无法访问 Temporary failure in name resolution
容器参数
docker-compose.yml 的 dns我也设置,按理来说应该可以访问,然而就是不断的按在地上摩擦
web:
build: .
restart: always
ports:
- "6699:80"
dns:
- 114.114.114.114
- 8.8.8.8
volumes:
- "./:/app"
networks:
backend:
排查
容器是否可以用公网ip访问,我这里是可以访问的,用域名就无法访问,telnet 访问域名 提示 Temporary failure in name resolution,意思是无法解析域名,那问题肯定出在了DNS上,于是来了灵感,容器的DNS和宿主机的保持一致不就可以了,果然后面办法验证我的猜想正确性。
解决办法
查看宿主机的dns服务
cat /etc/resolv.conf
然后将宿主机的,nameserver 添加到容器中
web:
build: .
restart: always
ports:
- "6699:80"
dns:
- 183.xx.xx.19 // 把宿主机的域名服务添加在这里
- 183.xx.xx.98 // 把宿主机的域名服务添加在这里
- 114.114.114.114
- 8.8.8.8
volumes:
- "./:/app"
networks:
backend:
然后保存,运行 docker-compose up -d --build 更新容器配置,就这样搞定了