0

我正在 AWS Workspaces 中设置一个新的开发环境,我注意到当我去 run 时docker build,我收到以下错误:

 ---> Running in d18733d53c16
W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease  Temporary failure resolving 'deb.debian.org'
W: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/InRelease  Temporary failure resolving 'security.debian.org'
W: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/InRelease  Temporary failure resolving 'deb.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.

Reddit 上的某个人提到这是一个已知问题,但 AWS 文档似乎没有提到这个问题,我在网上找不到更多信息。

它只是一个标准的 Docker 文件,已经使用了大约一年,没有任何问题。似乎只是发生在适用于 Linux 的 AWS Workspaces 中。

4

2 回答 2

2

使用桥接网络的 docker 映像似乎无法访问主机的 DNS。我怀疑 AWS 工作区 DNS 正在做一些过滤。

docker run --rm busybox nslookup google.com
;; connection timed out; no servers could be reached

使用主机网络它可以工作。

docker run --rm --network=host busybox nslookup google.com
Server:     10.2.8.238
Address:    10.2.8.238:53

Non-authoritative answer:
Name:   google.com
Address: 2a00:1450:4001:828::200

如果您需要使用桥接网络,那么我建议强制 docker 使用 Google 的 DNS 作为解决方法

cat /etc/docker/daemon.json 
{
    "dns":["1.1.1.1","8.8.8.8"]
}
于 2021-10-22T14:20:25.423 回答
1

在做任何其他事情之前,我终于能够通过Dockerfile在顶部添加 DNS 条目来解决这个问题。

例如:

RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - && \
    apt-get update -qq && \
    apt-get upgrade -y && \ 

转换成:


RUN echo "nameserver 1.1.1.1" > /etc/resolv.conf && \
    echo "nameserver 8.8.8.8" >> /etc/resolv.conf && \
    curl -sL https://deb.nodesource.com/setup_12.x | bash - && \
    apt-get update -qq && \
    apt-get upgrade -y && \ 

现在一切都很好。

于 2021-04-12T15:04:18.110 回答