必须在 daemon.json 中配置 insecure-registries 字段添加私有仓库地址(如 "192.168.1.100:5000"),格式为 host:port、不带 http:// 前缀,保存后重启 docker 服务并用 docker info 验证生效。
要让 docker 客户端信任并访问没有 https 证书的私有镜像仓库(比如用 http://192.168.1.100:5000 这类地址搭建的 registry),必须在 daemon.json 中显式声明该地址为“非安全仓库”。
确认私有仓库地址和协议
非安全仓库通常使用 http 协议,且未配置有效 TLS 证书。Docker 默认只允许通过 HTTPS 连接仓库,所以需明确告诉守护进程哪些地址可跳过证书校验。
- 地址格式必须是
host:port(如192.168.1.100:5000或harbor-dev.local:8080) - 不能带
http://前缀,否则会报错 - 若使用域名,确保宿主机能正确解析(可通过
/etc/hosts配置)
编辑 daemon.json 添加 insecure-registries
在 Linux 系统中,打开或新建 /etc/docker/daemon.json,加入 insecure-registries 字段:
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
{
"insecure-registries": ["192.168.1.100:5000", "harbor-dev.local:8080"]
}
- 多个地址用英文逗号分隔,放在一个数组里
- 如果已有其他配置(如
registry-mirrors),注意 JSON 格式合法:字段间加逗号,末尾不加 - Windows/macOS 用户使用 Docker Desktop,可在 Settings → Docker Engine 页面直接编辑
重启 Docker 守护进程生效
保存文件后,必须重载并重启服务,否则配置不会起作用:
sudo systemctl daemon-reload sudo systemctl restart docker
- 执行
docker info,查看输出中Insecure Registries项是否列出你配置的地址 - 如果没出现,检查 JSON 语法(常见错误:多了一个逗号、引号不匹配、用了中文标点)
- 重启后,
docker pull和docker push才能正常与该仓库通信
注意事项与安全提醒
启用 insecure-registries 是绕过 TLS 验证的行为,仅限内网、测试或完全可控环境使用:
- 生产环境强烈建议为私有仓库配置有效 HTTPS 证书(如 Let's Encrypt 或企业 CA 签发)
- 不要将
insecure-registries指向公网可访问的地址 - Harbor 等企业级私库默认启用 HTTPS,若强制关闭 TLS,也需走此配置路径










