当前位置: 首页 > news >正文

windows的rancherDesktop修改镜像源

您好!要在Windows系统上的Rancher Desktop中修改Docker镜像源(即设置registry mirror),您需要根据Rancher Desktop使用的容器运行时(containerd或dockerd)进行配置。用户提到“allowed-image”没有效果,这是因为“Allowed Images”功能用于限制可以拉取哪些镜像,而不是配置镜像加速器。

以下是针对Windows系统在Rancher Desktop中配置Docker镜像源的步骤:

首先,明确您的问题:“allowed-image”不是用来设置镜像源的

Rancher Desktop中的“Allowed Images”功能(通常在 Preferences -> Container Engine -> Allowed Images 中找到)是用来定义一个允许拉取和推送的镜像列表的规则,例如,只允许从您组织或特定的受信任的仓库中获取镜像。它不是用来设置镜像加速器的。您需要修改底层的容器运行时配置来实现镜像加速。

Rancher Desktop默认使用 containerd 作为容器运行时。

对于 containerd,镜像源的配置通常通过一个名为 registries.yaml 的文件来实现。在Rancher Desktop中,推荐使用预配脚本 (Provisioning Scripts) 来修改或创建这个文件。

方法一:使用预配脚本 (推荐给 containerd 用户)

  1. 找到或创建预配脚本目录

    • 在Windows上,Rancher Desktop的预配脚本目录通常位于:%LOCALAPPDATA%\rancher-desktop\provisioning
    • 一个完整的路径示例可能是:C:\Users\您的用户名\AppData\Local\rancher-desktop\provisioning
    • 如果此目录不存在,请手动创建它。
  2. 创建预配脚本文件

    • 在该目录中创建一个以 .start 结尾的脚本文件,例如 mirror-config.start
    • 这个脚本会在Rancher Desktop启动其Kubernetes后端(如果启用)或容器运行时之前执行。
  3. 编辑脚本文件内容

    • 使用文本编辑器打开您创建的 .start 文件,并添加以下内容的脚本。这个脚本会在Rancher Desktop的WSL2虚拟机内部创建或修改 /etc/rancher/k3s/registries.yaml 文件。
    Bash

    #!/bin/sh
    set -eux# 确保目标目录存在
    mkdir -p /etc/rancher/k3s# 创建或覆盖 registries.yaml 文件
    # 将 <your-mirror-url> 替换为您的镜像加速器地址,例如 https://docker.m.daocloud.io 或 https://registry.cn-hangzhou.aliyuncs.com
    # 您可以添加多个镜像源,containerd 会依次尝试
    cat <<EOF > /etc/rancher/k3s/registries.yaml
    mirrors:"docker.io":endpoint:- "https://docker.m.daocloud.io"  # 示例镜像源1- "https://hub-mirror.c.163.com"  # 示例镜像源2# 如果您有其他私有仓库或需要加速的仓库,也可以在这里配置# "my.private.registry:5000":#   endpoint:#     - "http://my.private.registry:5000"
    EOFecho "Registries.yaml configured for containerd."
    

    重要提示:

    • 将脚本中的 "https://docker.m.daocloud.io""https://hub-mirror.c.163.com" 替换为您实际想要使用的镜像加速器地址。
    • docker.io 是Docker Hub的官方地址。上述配置意味着当拉取例如 nginx (实际是 docker.io/library/nginx) 镜像时,会尝试通过您提供的 endpoint 地址来下载。
    • 您可以为不同的上游仓库配置不同的镜像,例如 k8s.gcr.io 等。
  4. 重启 Rancher Desktop

    • 关闭并重新启动Rancher Desktop,以使预配脚本生效。
  5. 验证配置 (可选但推荐)

    • Rancher Desktop启动后,您可以通过 rdctl shell 进入Rancher Desktop的WSL2虚拟机内部。 PowerShell

      rdctl shell
      
    • 然后查看 registries.yaml 文件的内容: Bash

      cat /etc/rancher/k3s/registries.yaml
      
    • 或者,如果您想检查 containerd 的最终配置(它会合并 registries.yaml 的信息): Bash

      sudo containerd config dump | grep -A 5 "plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors"
      
    • 尝试拉取一个镜像,如 nerdctl pull nginx (如果您使用 containerd 命令行) 或 docker pull nginx (如果Rancher Desktop的Docker CLI使用的是 containerd 后端),观察拉取速度或日志信息是否表明镜像源已生效。

方法二:如果您将 Rancher Desktop 切换到了 dockerd (moby) 作为容器运行时

如果您在 Rancher Desktop 的设置中 (Preferences -> Kubernetes Settings -> Container Runtime) 选择了 dockerd (moby),那么您需要修改Docker守护进程的配置文件 (daemon.json)。

  1. 通过 rdctl shell 进入 Rancher Desktop 的 WSL2 实例

    PowerShell

    rdctl shell
    
  2. 编辑或创建 daemon.json 文件

    • 在WSL2环境中,Docker的配置文件通常位于 /etc/docker/daemon.json
    • 使用文本编辑器(如 vinano)打开或创建该文件: Bash

      sudo vi /etc/docker/daemon.json
      
  3. 添加镜像源配置

    • daemon.json 文件中添加以下内容。如果文件已存在内容,请确保这是一个有效的JSON格式,并在合适的位置添加 registry-mirrors 键。
    JSON

    {"registry-mirrors": ["https://docker.m.daocloud.io", // 示例镜像源1"https://hub-mirror.c.163.com"  // 示例镜像源2// 添加更多镜像源,按需替换]// 如果已有其他配置,请确保JSON格式正确,例如:// "exec-opts": ["native.cgroupdriver=systemd"],// "log-driver": "json-file",// "log-opts": {//   "max-size": "100m"// }
    }
    
    • "https://docker.m.daocloud.io" 等替换为您要使用的镜像地址。
  4. 保存文件并退出编辑器。

  5. 重启 Rancher Desktop

    • 完全关闭并重新启动Rancher Desktop以使更改生效。有时,仅重启 dockerd 服务可能不够,重启整个Rancher Desktop能确保配置被加载。

重要注意事项:

  • 预配脚本的持久性:通过 %LOCALAPPDATA%\rancher-desktop\provisioning 目录下的 .start 脚本配置 registries.yaml (针对containerd) 是Rancher Desktop推荐的持久化自定义配置的方式。直接在WSL2虚拟机内部修改 /etc/rancher/k3s/registries.yaml/etc/docker/daemon.json 可能在Rancher Desktop更新或恢复出厂设置时丢失。
  • WSL2 网络:确保您的Windows防火墙或任何网络安全软件没有阻止Rancher Desktop的WSL2虚拟机访问您配置的镜像源地址。
  • 镜像源的有效性:请确保您使用的镜像源地址是有效的,并且能够提供您需要的镜像。
  • Rancher Desktop 版本:具体的配置路径和行为可能因Rancher Desktop的版本略有不同。建议查阅您所使用版本的官方文档以获取最准确的信息。

总结一下,对于Windows上的Rancher Desktop,如果您使用默认的 containerd 运行时,请优先考虑使用预配脚本在 %LOCALAPPDATA%\rancher-desktop\provisioning 目录创建 .start 文件来配置 /etc/rancher/k3s/registries.yaml。如果您切换到了 dockerd,则需要通过 rdctl shell 进入WSL2环境修改 /etc/docker/daemon.json,或者也可以研究是否能通过预配脚本来修改 daemon.json (一些用户报告可以通过预配脚本修改 /etc/conf.d/docker 文件来传递 DOCKER_OPTS,但这可能更复杂)。

请先尝试使用预配脚本为 containerd 配置镜像源。如果问题依旧,请提供您Rancher Desktop的版本和当前选择的容器运行时,以便进一步协助。

相关文章:

  • 算法训练营第十一天|150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
  • 安卓应用卡顿、性能低下的背后原因
  • goner/otel 在Gone框架接入OpenTelemetry
  • stable-diffusion windows本地部署
  • Spring AI 集成 DeepSeek V3 模型开发指南
  • 【C++】C++函数指针详解与实用技巧
  • 小白借助ai对全栈进行浅浅理解(学习笔记)-Lambda、Optional 避免空指针与新的日期时间 API
  • 南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案
  • 线程池的核心参数和线程创建方式,线程和进程
  • 介绍Unity中的Dictionary
  • 【RAG技术全景解读】从原理到工业级应用实践
  • 树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
  • Mockoon 使用教程
  • 解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)
  • 垃圾厌氧堆肥发酵实验台试验装置
  • 直接用字符串方式 split(“。“) 来切句,虽然能把句子拆开,但无法和 BERT 模型的 token 位置对应(embedding 用不上)
  • 两种方法求解最长公共子序列问题并输出所有解
  • Android学习总结之算法篇八(二叉树和数组)
  • 可视化图解算法35:在二叉树中找到两个节点的最近公共祖先(二叉树的最近公共祖先)
  • 【LeetCode】删除排序数组中的重复项 II
  • 水中托举救出落水孩童后遇难,42岁退役军人高武被确认为见义勇为
  • 央行、证监会:科技创新债券含公司债券、企业债券、非金融企业债务融资工具等
  • 中国电信财务部总经理周响华调任华润集团总会计师
  • 五一多城楼市火热:北京新房网签量同比翻倍,上海热门楼盘认购接连触发积分
  • Neuralink脑接设备获FDA突破性医疗设备认证
  • 抗战回望19︱《中国工程师学会四川考察团报告》:“将来重工业所在,以四川为最适宜之地点”