如何解决在 Linux Mint 21.1 中运行的 Docker Alpine 容器上的 apk 更新的 DNS 错误?

问题描述 投票:0回答:1

尝试在配置如下的系统上构建 docker 映像时收到 DNS 错误:

  • 基础镜像:Alpine 3.18 或 3.15
  • Docker版本:24.0.5
  • 运行 Docker 的操作系统:Linux Mint 21.1 Vera (Ubuntu 22.04)
  • 在 Windows 主机上的 VMware VM 中

我没有使用代理。

我的 Dockerfile 是

FROM alpine:3.18
RUN apk add --no-cache rsync

尝试构建时,我收到 DNS 错误:

fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz
WARNING: updating and opening https://dl-cdn.alpinelinux.org/alpine/v3.18/main: DNS lookup error
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86_64/APKINDEX.tar.gz
WARNING: updating and opening https://dl-cdn.alpinelinux.org/alpine/v3.18/community: DNS lookup error
4 unavailable, 0 stale; 15 distinct packages available

运行独立容器成功解析地址

docker run --rm alpine:3.18 nslookup dl-cdn.alpinelinux.org

Server:         192.168.94.2
Address:        192.168.94.2:53

Non-authoritative answer:
dl-cdn.alpinelinux.org  canonical name = dualstack.j.sni.global.fastly.net
Name:   dualstack.j.sni.global.fastly.net
Address: 2a04:4e42:1f::644

Non-authoritative answer:
dl-cdn.alpinelinux.org  canonical name = dualstack.j.sni.global.fastly.net
Name:   dualstack.j.sni.global.fastly.net
Address: 151.101.134.132

但我无法 ping 或按名称进行 apk 更新

docker run --rm alpine:3.18 ping -c 1 dl-cdn.alpinelinux.org
ping: bad address 'dl-cdn.alpinelinux.org'

虽然通过 IP 进行 ping 操作有效。

scott@spruce:\~$ docker run --rm alpine:3.18 ping -c 1 151.101.134.132
PING 151.101.134.132 (151.101.134.132): 56 data bytes
64 bytes from 151.101.134.132: seq=0 ttl=127 time=32.607 ms

\--- 151.101.134.132 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 32.607/32.607/32.607 ms

以下内容不起作用,按照此处此处

的建议

docker run --rm alpine:3.18 apk update
docker run --rm --network=host alpine:3.18 apk update
docker run --rm --dns=8.8.8.8 alpine:3.18 apk update

此外,按照这个答案使用“en*”配置netplan也没有帮助。

这似乎也有点特定于基础映像,因为我在构建基于 Ubuntu 的映像(特别是 python 3.5 映像)时没有任何问题

如何为 Ubuntu/Alpine 组合配置网络?

docker ubuntu alpine-linux docker-networking
1个回答
0
投票

我相信我能够通过设置

--add-host
指令来解决这个问题

docker image build --add-host "dl-cdn.alpinelinux.org:151.101.134.132" .

奇怪的是,这样做似乎可以修复它以构建基于 alpine:3.18 的任何其他图像,如果构建完全不同的基于 alpine 的图像,我似乎不再需要它了。我不能排除这是新的一天并且其他事情发生了变化。 (例如重新启动该人)。

© www.soinside.com 2019 - 2024. All rights reserved.