docker生成期间名称解析失败

docker生成期间名称解析失败,docker,Docker,我遇到一个问题,在发出docker build命令时收到以下错误:- curl: (6) Could not resolve host: dl.yarnpkg.com gpg: no valid OpenPGP data found. 这是我的Dockerbuild文件 # Base image FROM ruby:2.5.0 RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - RUN curl -fsSL https://d

我遇到一个问题,在发出docker build命令时收到以下错误:-

curl: (6) Could not resolve host: dl.yarnpkg.com
gpg: no valid OpenPGP data found.
这是我的Dockerbuild文件

# Base image
FROM ruby:2.5.0

RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee 
/etc/apt/sources.list.d/yarn.lisT
RUN apt-get update 
RUN apt-get install -qq -y build-essential libpq-dev nodejs yarn
在docker外部运行时,命令成功完成

为了解决这些问题,我尝试了以下方法

  • 将DNS服务器添加到/etc/docker/daemon.json-同样的问题
  • 取消注释/etc/default/DOCKER中的DOCKER_OPTS=“--dns 8.8.8.8--dns 8.8.4.4”行-相同问题
  • 替换我在/etc/resolv.conf中本地使用的DNS服务器-同样的问题
  • 我已经尝试了来自谷歌和OpenDNS的DNS服务器,以及多个ISP,具体取决于im运行命令的位置

    笔记本电脑正在运行Ubuntu 16:04,安装了Docker版本18.06.0-ce,版本为0ffa825

    使用以下命令也会失败

    FROM ruby:2.5.0
    RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
    
    导致以下错误

    W: Failed to fetch http://deb.debian.org/debian/dists/stretch/InRelease  Temporary failure resolving 'deb.debian.org'
    W: Failed to fetch http://deb.debian.org/debian/dists/stretch-updates/InRelease  Temporary failure resolving 'deb.debian.org'
    W: Failed to fetch http://security.debian.org/dists/stretch/updates/InRelease  Temporary failure resolving 'security.debian.org'
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    
    所以我知道这不仅仅是dl.yarnpkg.com主机的问题


    使用无缓存选项运行docker build命令没有任何区别。

    我在Ubuntu 16.04中使用docker,有时我也会遇到名称解析问题


    唯一成功的是在构建时添加
    --network=host
    。我真的不知道发生了什么,但它似乎需要这个来使用您的计算机名称解析功能。我希望它能有所帮助。

    有时我遇到这个问题,需要重新启动docker守护进程

    我在一个虚拟机中工作,我基本上从未关闭过它,而是将它冻结,以后再工作。我还必须在主机上切换网络,这也会影响虚拟机


    这似乎会不时混淆docker守护进程,需要重新启动以使其网络堆栈恢复到一致状态。

    如果在容器外部的docker主机上运行
    nslookup dl.yarnpkg.com 8.8.8
    ,会发生什么?服务器:8.8.8.8地址:8.8.8.8#53非权威答案:姓名:dl.yarnpkg.com地址:104.16.60.173姓名:dl.yarnpkg.com地址:104.16.63.173姓名:dl.yarnpkg.com地址:104.16.61.173姓名:dl.yarnpkg.com地址:104.16.62.173姓名:dl.yarnpkg.com地址:104.16.59.173正如我所说,我尝试过不同的DNS提供商,我也尝试过在ubuntu dns设置中禁用dnsmasq…不走运,…你在更改daemon.json后重新加载docker引擎了吗?如果运行
    docker run-it--rm alpine cat/etc/resolv.conf
    docker run-it--rm alpine nslookup dl.yarnpkg.com
    ,会发生什么情况?#由resolvconf(8)生成的glibc解析器(3)的Dynamic resolv.conf(5)文件#不要手动编辑此文件--您的更改将被覆盖nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 192.168.0.1 nameserver 208.67.222.222搜索Home nameserver 8.8.8 nameserver 8.8.4.4我也有同样的问题,但在CentOS 8
    --network=host
    中为我解决了它,但问题最近才出现,即使在Docker守护程序重新启动之后。每次发出Docker run命令时,您都会设置网络。这很奇怪,因为我认为它应该可以与网桥网络一起工作。