如何解决wget 挂在某些主机上的 docker 中,带有 debian:buster 映像
我有以下 Dockerfile 挂在 wget 上,最终在 300 秒后出错。 我在 debian:buster 容器中手动运行了这些步骤,行为完全相同。
from debian:buster
RUN apt update && apt install -y wget
RUN wget https://raw.githubusercontent.com/dwyl/english-words/master/words.txt
输出如下:
> [3/3] RUN wget https://raw.githubusercontent.com/dwyl/english-words/master/words.txt:
#6 0.296 --2021-02-05 23:38:59-- https://raw.githubusercontent.com/dwyl/english-words/master/words.txt
#6 0.304 Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133,151.101.192.133,151.101.128.133,...
#6 0.310 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
#6 301.7 GnuTLS: Error in the pull function.
#6 301.7 Unable to establish SSL connection.
这在其他主机上成功构建,但我和另一个在工作网络上运行 Linux Mint 19.3 的人都遇到了它挂起的情况。基于不同 Ubuntu 的操作系统上的其他人似乎在同一网络上看不到这种行为。
有用的东西:
- 使用不同的主机。
- 使用 debian:stretch 或 debian:bullseye 或 ubuntu:bionic
- 在我的家用计算机上的虚拟机上使用 Linux Mint 19.3 作为主机。
行不通的事情:
- 使用 debian:buster-backports 或 debian:buster-slim
我仔细检查了应该相同的版本是否完全相同(即 VM 运行完全相同的 docker 并使用完全相同的 debian:buster 映像等)。
我运行 Wireshark 以查看可能有什么不同,我注意到由于某种原因“Client Hello”作为 TLSv1 发送——而在我的 VM 上它作为 TLSv3 发送(即使它是完全相同的操作系统、docker 版本,图片等):
"No.","Time","Source","Destination","Protocol","Length","Info"
"1","0.000000000","172.17.0.2","10.100.211.10","DNS","85","Standard query 0x8f40 A raw.githubusercontent.com"
"2","0.000028023","Standard query 0x785c AAAA raw.githubusercontent.com"
"3","0.002271772","178","Standard query response 0x785c AAAA raw.githubusercontent.com CNAME github.map.fastly.net SOA ns1.fastly.net"
"4","0.002274784","136","Standard query response 0x8f40 A raw.githubusercontent.com CNAME github.map.fastly.net A 151.101.52.133"
"5","0.002386107","151.101.52.133","TCP","74","40752 > 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=82201871 TSecr=0 WS=128"
"6","0.006092750","443 > 40752 [SYN,ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1380 SACK_PERM=1 TSval=1983610677 TSecr=82201871 WS=512"
"7","0.006104753","66","40752 > 443 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=82201875 TSecr=1983610677"
"8","0.006372922","TLSv1","583","Client Hello"
"9","0.007137626","443 > 40752 [ACK] Seq=1 Ack=518 Win=65536 Len=0 TSval=1983610677 TSecr=82201875"
"10","0.185610511","[TCP Dup ACK 9#1] 443 > 40752 [ACK] Seq=1 Ack=518 Win=65536 Len=0 TSval=1983610677 TSecr=82201875"
这是它挂起的地方。没有发回“服务器问候”。在 debian:stretch 图像上使用(并有效)TLSv2,如果我在 Dockerfile 中为 wget 强制使用 TLSv2,它在 debian:buster 中仍然不起作用。 debian:bullseye 也使用 TLSv3。
会不会是工作网络的某些原因导致了这种行为?一些图书馆的东西?我已经没脑子了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。