【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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值