Loading

podman 无法登录docker

Podman 登录docker

问题描述

前置环境:clash 设置为系统代理

在启动podman machine default 后,尝试登录docker.io提示连接出现EOF.

Error: authenticating creds for "docker.io": pinging container registry registry-1.docker.io: Get "https://registry-1.docker.io/v2/": unexpected EOF

问题排查

错误分析&定位:

错误核心信息: unexpected EOF (意外的文件结束)

发生在哪一步: pinging container registry registry-1.docker.io (正在尝试连接容器注册中心 registry-1.docker.io)

完整含义: Podman 尝试通过 HTTPS 协议连接到 Docker 官方仓库(registry-1.docker.io)以进行认证,但在建立安全连接(SSL/TLS 握手)的过程中,连接意外地中断或关闭了,导致 Podman 收到一个“意外的文件结束”信号,无法完成通信。

尝试解决问题

TRY1(失败)

# in pc shell
podman machine ssh
# in podman machine 
curl -v https://registry-1.docker.io/v2/
# 运行结果
   Trying 192.168.x.x:7897...

* Connected to 192.168.x.x (192.168.x.x) port 7897

* CONNECT tunnel: HTTP/1.1 negotiated

* allocate connect buffer

* Establish HTTP proxy tunnel to registry-1.docker.io:443

> CONNECT registry-1.docker.io:443 HTTP/1.1

> Host: registry-1.docker.io:443

> User-Agent: curl/8.9.1

> Proxy-Connection: Keep-Alive

>

* Proxy CONNECT aborted

* closing connection #0

abort: 代理可以接受但是访问网页出现了拒绝(registry-1.docker.io:443.)。

考虑到clash设置为系统代理(猜测会映射到主机网路),因此尝试将代理设置为127.0.0.1,但并没有啥用,查了下,实际上并没有映射到主机的用户网络。

TRY2(成功)

尝试machine 使用用户网络

查找资料 发现 创建机器市 有 使用用户网络 的选项

podman-machine-init — Podman 文档 --- podman-machine-init — Podman documentation

–user-mode-networking
这个选项只能在 Windows 上的 WSL 提供者中使用。在其他所有 平台此选项被忽略,用户模式网络将始终 true 因此在这里,因为这些提供者总是依赖于 gvproxy(我们为虚拟机提供的用户模式网络工具)

与 Windows/WSL 后端默认的 false 不同,它遵循标准的 WSL 网络设置。在 Windows/WSL 上将此设置更改为 true 会通知 Podman 在启动此机器实例时用用户模式网络分布替换 WSL 网络设置。由于 WSL 在各个发行版之间共享相同的内核,因此所有其他运行的发行版都会重用此网络。同样,当最后一个具有 true 设置的机器实例停止时,会恢复原始网络设置。

在某些 VPN 配置中,VPN 可能会丢弃来自备用网络接口的流量,包括虚拟机网络设备。通过启用用户模式网络,VPN 可以观察到所有 Podman 机器流量都来自主机,从而绕过问题。

设置完成后,重新进行 docker 登录和 镜像拉起 成功 ✌

posted @ 2025-10-22 22:15  GIPV  阅读(5)  评论(0)    收藏  举报