如何让 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 就会从你的系统中被彻底移除

相关推荐
q***575041 分钟前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
猪猪拆迁队1 小时前
前端图形引擎架构设计:双引擎架构设计
前端·后端·架构
GISer_Jing2 小时前
Node.js 开发实战:从入门到精通
javascript·后端·node.js
q***51892 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
码事漫谈3 小时前
C/C++混合项目中的头文件管理:.h与.hpp的分工与协作
后端
码事漫谈3 小时前
C++中有双向映射数据结构吗?Key和Value能否双向查找?
后端
Felix_XXXXL3 小时前
集成RabbitMQ+MQ常用操作
java·后端
该用户已不存在4 小时前
Rust性能调优:从劝退到真香
后端·rust
冒泡的肥皂4 小时前
说下数据存储
数据库·后端·mysql
bcbnb4 小时前
Wireshark网络数据包分析工具完整教程与实战案例
后端