如何让 Podman 使用国内镜像源,这是我见过最牛的方法

配置 Podman 使用国内镜像源,可以通过修改其配置文件或使用 Podman Desktop 的图形界面来实现。以下是两种方法的详细步骤:

方法一:通过修改配置文件设置镜像源

进入 WSL 环境:

以管理员身份打开 Windows PowerShell,输入 wsl 进入 Linux 子系统。

编辑配置文件:

使用以下命令编辑 registries.conf 文件:

bash 复制代码
sudo vi /etc/containers/registries.conf

如果系统中存在 /etc/containers/registries.conf.d/ 目录,并且其中存在 .conf 文件(例如 999-podman-machine.conf),修改该目录下的文件也是有效的。

修改配置文件内容:

在文件中添加或修改以下配置。这里以配置多个国内常用镜像源为例,你可以根据需要选择使用:

ini

ini 复制代码
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "docker.mirrors.ustc.edu.cn"  # 中国科学技术大学镜像源
[[registry]]
prefix = "docker.io"
location = "mirror.ccs.tencentyun.com"  # 腾讯云镜像源
[[registry]]
prefix = "docker.io"
location = "j5hlnxkk.mirror.aliyuncs.com"  # 阿里云镜像源(地址可能因人而异)
[[registry]]
prefix = "docker.io"
location = "hub-mirror.c.163.com"  # 网易镜像源

如果你的镜像仓库使用 HTTP 协议而非 HTTPS,需要在配置中显式声明 insecure = true

保存并重启 Podman:

保存对配置文件的修改并退出编辑器。执行 wsl --shutdown 关闭 WSL,然后重新启动 Podman 虚拟机。在 PowerShell 中可以使用 podman machine stop 然后 podman machine start

方法二:通过 Podman Desktop GUI 配置镜像源

打开 Podman Desktop:

双击打开 Podman Desktop 应用。

进入设置:

点击窗口左下角的「Settings」按钮。

配置镜像源:

在设置菜单中选择「Registries」选项,添加或修改容器注册表信息,将国内镜像源的地址填入相应的位置。

常用国内镜像源地址

你可以根据需要选择并替换配置中的 location 字段值:

常见报错及解决方案

在配置或操作过程中,可能会遇到以下报错:

Error: Command execution failed with exit code 125Error: system connection "podman-machine-default-root" already exists. consider a different machine name or remove the connection with podman system connection rm

解决方案 :该错误表示名为 podman-machine-default-root 的系统连接已存在,导致新操作(如创建或启动虚拟机)冲突。可按以下步骤解决:

  1. 打开 PowerShell,执行命令删除已存在的连接:

    shell 复制代码
    podman system connection rm podman-machine-default-root
  2. 若删除后仍有问题,可尝试停止并重启 Podman 虚拟机:

    shell 复制代码
    podman machine stop
    podman machine start
  3. 若问题持续,可删除现有虚拟机并重新创建(注意:此操作会清除虚拟机数据,请谨慎执行):

    shell 复制代码
    podman machine rm default
    podman machine init
    podman machine start

验证配置

完成配置后,再次尝试拉取镜像(例如 podman pull nginx),速度应该会有显著提升。如果遇到问题,可以检查配置文件是否正确,或者尝试使用其他国内镜像源。

要彻底删除 podman-machine-default 虚拟机及其相关文件,可以使用 podman machine rm 命令13。以下是具体操作步骤和注意事项。

如何删除 podman-machine-default

删除虚拟机及关联文件

执行以下命令删除 podman-machine-default 虚拟机:

bash 复制代码
podman machine rm podman-machine-default

此命令会删除虚拟机及其关联文件,包括生成的Podman系统连接、点火文件以及虚拟机镜像文件13。系统会列出即将删除的文件并请求确认,输入 y 即可继续。

强制删除选项

如果虚拟机正在运行,删除可能被阻止。此时可添加 --force-f 选项强制删除:

bash 复制代码
podman machine rm -f podman-machine-default

使用该选项将无需确认直接停止并删除虚拟机13。

选择性保留文件

在某些情况下,你可能希望保留某些文件(如用于调试或迁移)。可以使用以下选项:

  • --save-ignition:保留生成的点火文件
  • --save-image:保留虚拟机镜像文件

注意事项

  • 删除操作仅适用于无根模式13
  • 如果未指定计算机名称,默认会删除 podman-machine-default
  • 删除前请确保没有重要数据存储在虚拟机中,因为相关容器和卷数据将一并丢失

怎么彻底删除 podman

要彻底删除 Podman,需要根据你的操作系统执行不同的清理步骤。以下是针对各系统的完整卸载指南:

Linux 系统卸载步骤

在基于 Red Hat 的系统中(如 Fedora、RHEL、CentOS),可以使用包管理器卸载 Podman 及相关组件1:

bash 复制代码
sudo dnf remove podman

对于其他 Linux 发行版,请使用相应的包管理命令进行卸载1。

卸载完成后,还需要手动删除 Podman 的配置文件和存储数据:

  • 删除配置文件:sudo rm -rf /etc/containers/1
  • 删除存储数据:sudo rm -rf /var/lib/containers/1
  • 清理用户目录中的相关文件:rm -rf ~/.local/share/containers/1

Windows 系统卸载步骤

在 Windows 上卸载 Podman 需要移除多个组件:

首先卸载 Podman Desktop 应用程序4,然后清理相关环境:

  • 如果使用了 WSL,可以执行 wsl --shutdownwsl --unregister podman-machine-default 来清理 WSL 环境4。

同时需要删除 Podman 的虚拟机配置文件,这些文件通常位于 $XDG_CONFIG_HOME/containers/podman/machine/ 目录5。

macOS 系统卸载步骤

在 macOS 上,除了卸载 Podman 本体外,还需要清理其依赖的虚拟机环境6。可以使用 podman machine rm 命令删除 Podman 虚拟机5。

清理容器和镜像残留

在卸载 Podman 前,建议先清理所有容器和镜像:

  • 停止所有运行中的容器:podman stop --all1
  • 删除所有容器:podman rm --all11
  • 删除所有镜像:podman rmi --all

注意事项

  • 在卸载前请备份重要的容器数据
  • 如果之前使用过 Docker,请注意区分两者的残留文件,避免误删
  • 对于通过虚拟机方式安装的 Podman(如在 Windows 和 macOS 上),还需要清理对应的虚拟机文件56

完成以上步骤后,Podman 就会从你的系统中被彻底移除

相关推荐
疯狂踩坑人3 小时前
别再说我不懂Node"流"了
后端·node.js
aricvvang3 小时前
🚀 NestJS 使用 cache-manager-redis-store 缓存无效?真相在这里!
javascript·后端·nestjs
SimonKing3 小时前
【开发者必备】Spring Boot 2.7.x:WebMvcConfigurer配置手册来了(一)!
java·后端·程序员
oak隔壁找我3 小时前
Java Collection 包使用指南
java·后端
oak隔壁找我4 小时前
Spring Boot MongoDB 使用技巧
java·后端
倚栏听风雨4 小时前
RAG检索增强生成(Retrieval Augmented Generation)
后端
倚栏听风雨4 小时前
召回率 精准率 F1 概念解释
后端
间彧4 小时前
消息队列在流量削峰场景下如何设置合理的队列长度和消费速率?
后端