You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用yq向现有/etc/docker/daemon.json文件追加代理配置

问题描述

现有/etc/docker/daemon.json文件内容如下:

$ yq . /etc/docker/daemon.json
{
  "dns": [
    "a.b.c.d1"
  ]
}
$

尝试两条yq命令追加代理配置均失败:
第一条命令及错误:

$ yq '. + { proxies : {  "http-proxy":env($http_proxy) , "https-proxy":env($https_proxy) , "no-proxy":env($no_proxy)} }' /etc/docker/daemon.json
Error: 1:7: invalid input text "proxies : {  \"ht..."
$

第二条命令及错误:

$ yq '. + { .proxies = {  .http-proxy=env($http_proxy) , .https-proxy=env($https_proxy) , .no-proxy=env($no_proxy)} }' /etc/docker/daemon.json
Error: !!str () cannot be added to a !!map ()
$

期望生成的JSON结果:

{
  "dns": [
    "a.b.c.d1"
  ],
  "proxies": {
    "http-proxy": "http://x.y.z.t:8080",
    "https-proxy": "http://x.y.z.t:8080",
    "no-proxy": "localhost,127.0.0.1,localaddress,.localdomain.com"
  }
}
解决方案

使用以下命令即可实现需求:

yq '.proxies = { "http-proxy": env($http_proxy), "https-proxy": env($https_proxy), "no-proxy": env($no_proxy) }' /etc/docker/daemon.json

若需要直接修改原文件(原地编辑),添加-i参数:

yq -i '.proxies = { "http-proxy": env($http_proxy), "https-proxy": env($https_proxy), "no-proxy": env($no_proxy) }' /etc/docker/daemon.json

错误原因解析

  • 第一条命令:构造map时proxies与冒号之间的多余空格违反了严格的JSON语法解析规则,导致yq无法识别。此外直接使用赋值而非合并操作,逻辑更简洁不易出错。
  • 第二条命令:在{}内部错误使用了.proxies =这种赋值语句,map内部应该是键值对形式,而非赋值表达式,导致yq无法将其解析为合法map,进而报错无法与原文件的map结构合并。

内容的提问来源于stack exchange,提问作者SebMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:52:16