宿主可以访问公网 Docker容器里无法访问 Temporary failure in name resolution

宿主可以访问公网 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 更新容器配置,就这样搞定了

猜你喜欢

转载自blog.csdn.net/meimeieee/article/details/131521090