cmd.cat/lspci容器拉取超时:如何调整超时或找替代镜像?
问题描述
之前使用cmd.cat/lspci容器测试,今日运行失败。执行docker run cmd.cat/lspci时,本地无镜像,拉取时报错:
docker run cmd.cat/lspci Unable to find image 'cmd.cat/lspci:latest' locally docker: Error response from daemon: Get "https://cmd.cat/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.
通过curl测试https://cmd.cat/v2/,连接响应耗时约20秒,日志如下:
(base) time curl -vvv https://cmd.cat/v2/ * Host cmd.cat:443 was resolved. * IPv6: 2606:4700:3035::ac43:a3ae, 2606:4700:3031::6815:2aa5 * IPv4: 172.67.163.174, 104.21.42.165 * Trying 172.67.163.174:443... * Connected to cmd.cat (172.67.163.174) port 443 * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519 / id-ecPublicKey * ALPN: server accepted h2 * Server certificate: * subject: CN=cmd.cat * start date: Mar 30 17:02:26 2024 GMT * expire date: Jun 28 17:02:25 2024 GMT * subjectAltName: host "cmd.cat" matched cert's "cmd.cat" * issuer: C=US; O=Let's Encrypt; CN=E1 * SSL certificate verify ok. * Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384 * Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384 * Certificate level 2: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384 * using HTTP/2 * [HTTP/2] [1] OPENED stream for https://cmd.cat/v2/ * [HTTP/2] [1] [:method: GET] * [HTTP/2] [1] [:scheme: https] * [HTTP/2] [1] [:authority: cmd.cat] * [HTTP/2] [1] [:path: /v2/] * [HTTP/2] [1] [user-agent: curl/8.5.0] * [HTTP/2] [1] [accept: */*] > GET /v2/ HTTP/2 > Host: cmd.cat > User-Agent: curl/8.5.0 > Accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing ... Delay here... ... < HTTP/2 200 < date: Thu, 02 May 2024 22:17:59 GMT < content-type: application/json; charset=utf-8 < content-length: 2 < docker-distribution-api-version: registry/2.0 < x-content-type-options: nosniff < age: 125665 < via: 1.1 varnish (Varnish/6.0) < cache-control: max-age=14400 < cf-cache-status: STALE < last-modified: Wed, 01 May 2024 11:23:34 GMT < accept-ranges: bytes < report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=IpLVNEn4p5iW9zVaiyAwXcgB6sc%2BZbBHrJQ2Ms7Dq4L7DgtRR2Vg0SrURC0aSH%2FlfWheqByQf7G0MmQRHYn2yXTfrAMnCmcBZtyghjuje5hy8MDStBMIb5Fp"}],"group":"cf-nel","max_age":604800} < nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} < server: cloudflare < cf-ray: 87db61f93c3030bd-SEA < alt-svc: h3=":443"; ma=86400 < * Connection #0 to host cmd.cat left intact {} real 0m19.557s user 0m0.046s sys 0m0.015s (base)
本地及多台服务器测试均出现该问题,询问是否可以调整docker run或docker pull的超时时间,或者有其他包含lspci的公开Docker镜像可用?
解决方案
一、调整Docker拉取超时时间
Docker守护进程默认拉取超时较短,可通过修改配置延长:
- 编辑Docker配置文件(通常为
/etc/docker/daemon.json,不存在则创建),添加超时配置:
{ "timeout": 300 }
"timeout": 300表示设置超时为300秒(5分钟),可根据实际情况调整数值。
2. 重启Docker守护进程:
systemctl restart docker
之后再执行docker pull cmd.cat/lspci或docker run cmd.cat/lspci即可。
二、替代的lspci Docker镜像
若调整超时后仍无法拉取,可使用以下官方维护的稳定镜像:
- alpine:latest:基于轻量Alpine Linux,安装pciutils即可使用:
docker run --rm -it alpine:latest sh -c "apk add --no-cache pciutils && lspci"
- debian:stable-slim:轻量Debian镜像,预装pciutils:
docker run --rm -it debian:stable-slim lspci
- ubuntu:latest:Ubuntu官方镜像,预装pciutils:
docker run --rm -it ubuntu:latest lspci
内容的提问来源于stack exchange,提问作者gogasca
相关产品推荐
相关产品推荐

