当前位置: 首页 > 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

相关文章:

  • C++核心编程:类与对象全面解析
  • uniapp常用
  • 迭代器与生成器
  • 2025A卷-正整数到Excel编号之间的转换
  • 什么是 Web 标准?为什么它们对 SEO 和开发很重要?
  • GitLab CVE-2024-12444 安全漏洞解决方案
  • Vue+Echarts 3D地图效果
  • Java锁的升级流程详解:无锁、偏向锁、轻量级锁、重量级锁
  • YUM/DNF管理工具
  • 用vite动态导入vue的路由配置
  • 递归、搜索和回溯算法《递归》
  • 飞凌嵌入式T527核心板获得【OpenHarmony生态产品兼容性证书】
  • window 图形显示驱动-在 WDDM 1.2 中提供无缝状态转换(下)
  • 关于健身房管理系统前后端软件开发主要功能需求分析
  • 《Astro 3.0岛屿架构让内容网站“脱胎换骨”》
  • RISCV学习(5)GD32VF103 MCU架构了解
  • 【AI News | 20250428】每日AI进展
  • transformer-实现单层encoder_layer
  • VINS-FUSION:跑通手机录制数据
  • C语言----操作符详解(万字详解)
  • 新华每日电讯:从上海街区经济看账面、市面、人面、基本面
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 脱发后怎么把头发养回来?脱发自救指南来了
  • 人民时评:投资于人,促高质量充分就业
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等
  • 视频丨伊朗港口爆炸事件灭火工作已完成80%