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

【Docker】使用 jq 管理镜像源

国内访问 Docker Hub 速度较慢,通过配置国内镜像加速器,可显著加快拉取镜像速度。使用 jq 操作 /etc/docker/daemon.jsonregistry-mirrors 字段,可避免手动编辑带来的格式错误,并在添加、替换、删除等场景下保持高效与安全。


一、准备工作

  1. 安装 jq

    # Debian/Ubuntu
    sudo apt update && sudo apt install -y jq
    # CentOS/RHEL/Fedora
    sudo yum install -y jq    # 或 sudo dnf install -y jq
    
  2. 确保有 sudo 权限


二、统一前置:备份并初始化配置

# 备份(文件不存在时忽略)
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak.$(date +%Y%m%d%H%M%S) 2>/dev/null || true
# 初始化:文件不存在则创建空 JSON
[ -f /etc/docker/daemon.json ] || echo '{}' | sudo tee /etc/docker/daemon.json >/dev/null

⚠️ 建议每次操作前先执行此脚本,以确保可回滚并保证 daemon.json 文件始终为合法 JSON。


三、操作示例

以下示例均在初始化脚本执行完成后使用。

1. 完全替换 / 设置镜像源列表(推荐)

覆盖现有 registry-mirrors,适用于一次性设定多个加速器。

# 定义镜像源列表
MIRRORS='["https://docker.xuanyuan.me","https://dockers.xuanyuan.me","https://docker.1ms.run","https://dislabaiot.xyz","https://docker.sunzishaokao.com","https://hub.rat.dev","https://doublezonline.cloud","https://xdark.top","https://dockerpull.cn","https://docker.tbedu.top","https://mirror.gcr.io","https://dockerproxy.com","https://docker.nju.edu.cn","https://mirror.iscas.ac.cn","https://elastic.m.daocloud.io","https://docker.m.daocloud.io"
]'
# 使用 jq 写入并原子替换
sudo jq --argjson m "$MIRRORS" '."registry-mirrors" = $m' /etc/docker/daemon.json \| sudo tee /etc/docker/daemon.json.tmp >/dev/null \&& sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json

2. 追加单个镜像源

仅在原有列表末尾添加,不会重复创建。

NEW="https://registry.docker-cn.com"
sudo jq --arg nm "$NEW" '."registry-mirrors" = (."registry-mirrors"? // [] | . + [$nm])' /etc/docker/daemon.json \| sudo tee /etc/docker/daemon.json.tmp >/dev/null \&& sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json

3. 删除所有镜像源(恢复默认)

sudo jq 'del(."registry-mirrors"?)' /etc/docker/daemon.json \| sudo tee /etc/docker/daemon.json.tmp >/dev/null \&& sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json

四、重启与验证

  1. 重启 Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  2. 验证配置

    docker info # 应显示存在刚才设置的地址
    

五、注意事项

  • 每次修改后必须重启 Docker 服务,否则配置不生效。
  • jq 操作保证 JSON 格式安全,不会因手动编辑引入语法错误。
  • 镜像源不宜过多,推荐 2–3 个稳定高速的加速器。
  • 若配置不生效:
    • 检查 /etc/docker/daemon.json 是否为有效 JSON:jq . /etc/docker/daemon.json
    • 查看 Docker 日志:sudo journalctl -u docker.service
http://www.xdnf.cn/news/187039.html

相关文章:

  • Linux权限概念讲解
  • 喷泉码解码成功率
  • 如何使用 Redis 缓存验证码
  • Flow原理
  • Unity3D引擎框架及用户接口调用方式相关分析及汇总
  • 关系数据的可视化
  • 【数据结构】排序
  • 一、JVM基础概念
  • 全开源、私有化部署!轻量级用户行为分析系统-ClkLog
  • MAC如何安装多版本jdk(以8,11,17为例)
  • 定时器的源码介绍与简单实现——多线程编程简单案例[多线程编程篇(5)]
  • stm32wb55rg (2) 阅读资料手册
  • Leetcode刷题 | Day49_图论01
  • 数字孪生的浪潮:从虚拟镜像到现实世界的 IT 变革
  • 孙宇晨将出席迪拜Token2049 与特朗普次子共话加密未来
  • 【Pandas】pandas DataFrame rmod
  • 基于vue框架的电影推荐系统p0apl(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 60、微服务保姆教程(三)Sentinel---高可用流量管理框架/服务容错组件
  • 微信小程序分页和下拉刷新
  • uniapp 微信小程序遇到的坑
  • 一种改进的YOLOv11网络,用于无人机视角下的小目标检测
  • 深度学习中的正则化简介
  • 如何正确地解读和分析MySQL性能模式和查询分析器提供的性能数据?
  • 【算法应用】基于灰狼算法求解DV-Hop定位问题
  • React Testing Library
  • 2025-4-25 情绪周期视角复盘(mini)
  • 【C语言极简自学笔记】C 语言数组详解:一维数组与二维数组
  • 「OC」源码学习——alloc与init的实现
  • 【博客系统】博客系统第二弹:实现博客列表接口(在 Service 层重新封装 Mapper 层返回结果,避免实体类所有字段都向前端返回)、SimpleDateFormat 类的使用方法
  • 强化学习中关键超参数的详细说明