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

如何在CentOS 7系统中通过Shell脚本为Docker添加不安全镜像仓库

解决方案

方案一:带JSON格式校验的Shell脚本(推荐)

此方案不会覆盖你已有的不安全仓库配置,兼容daemon.json存在/不存在的场景:

  • 第一步:保存以下内容为add_insecure_registry.sh
#!/bin/bash
# 定义要新增的不安全仓库地址
NEW_REGISTRY="registry-cbu.languoguang.com"
# 安装JSON处理工具jq,CentOS7默认无该工具,CI环境一般允许安装轻量依赖
sudo yum install -y jq > /dev/null 2>&1
# 确保Docker配置目录存在
sudo mkdir -p /etc/docker
# 若配置文件不存在则初始化基础结构
if [ ! -f /etc/docker/daemon.json ]; then
  sudo echo '{"insecure-registries": []}' > /etc/docker/daemon.json
fi
# 新增仓库地址到配置数组,自动去重避免重复添加
sudo jq --arg reg "$NEW_REGISTRY" '.["insecure-registries"] += [$reg] | unique' /etc/docker/daemon.json > temp.json && sudo mv temp.json /etc/docker/daemon.json
# 重载配置并重启Docker使修改生效
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置是否生效
docker info | grep -A 3 "Insecure Registries"
  • 第二步:执行脚本
chmod +x add_insecure_registry.sh
./add_insecure_registry.sh

执行完成后输出内容包含registry-cbu.languoguang.com即为配置成功。


方案二:无额外依赖的备用脚本

如果CI环境不允许安装jq等额外工具,可使用以下纯Shell脚本实现:

#!/bin/bash
NEW_REGISTRY="registry-cbu.languoguang.com"
sudo mkdir -p /etc/docker
if [ ! -f /etc/docker/daemon.json ]; then
    sudo cat > /etc/docker/daemon.json <<EOF
{
  "insecure-registries": ["registry.titan.languoguang.com:5000", "$NEW_REGISTRY"]
}
EOF
else
    # 检查是否已配置该仓库,避免重复添加
    if ! grep -q "$NEW_REGISTRY" /etc/docker/daemon.json; then
        sudo sed -i "s/\"insecure-registries\": \[/\"insecure-registries\": [\"$NEW_REGISTRY\", /" /etc/docker/daemon.json
    fi
fi
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A 3 "Insecure Registries"

注意事项

  1. 修改Docker不安全仓库配置必须重启Docker daemon才能生效,CI流水线独占Docker环境的场景下重启不会影响其他任务
  2. 如果你使用的是Docker-in-Docker模式的CI环境,启动DinD容器时直接添加启动参数--insecure-registry registry-cbu.languoguang.com即可,不需要额外修改配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:30:05