一、原理说明
Harbor 默认 HTTPS,若仅启用 HTTP,Docker 客户端默认拒绝连接,会报 x509: certificate signed by unknown authority,需要在 Docker 守护进程配置 insecure-registries 信任该 HTTP 仓库地址。
二、配置方式分两类:Linux(systemd)、Windows/Mac Docker Desktop
方式 1:Linux 服务器(CentOS / Ubuntu /openEuler 通用)
1. 检查 docker 配置文件是否存在
Docker 守护进程配置文件路径:/etc/docker/daemon.json 若无该文件则手动创建,有则直接编辑。
# 编辑配置文件
vim /etc/docker/daemon.json
2. 写入配置模板
替换 ${REGISTRY_HOST} 为你的 Harbor 地址,支持域名 / IP + 端口 示例 1:Harbor 无端口(80)
{
"insecure-registries": ["192.168.1.100"]
}
示例 2:Harbor 自定义端口 8080
{
"insecure-registries": ["192.168.1.100:8080"]
}
示例 3:域名方式
{
"insecure-registries": ["harbor.local"]
}
多仓库用逗号分隔:
["ip1","ip2:port","domain"]
3. 重载 Docker 配置 + 重启服务
# 重载systemd配置
systemctl daemon-reload
# 重启docker
systemctl restart docker
4. 验证配置是否生效
docker info
输出中找到 Insecure Registries,能看到你配置的 Harbor 地址即成功。
方式 2:Docker Desktop(Windows / Mac)图形化配置
打开 Docker Desktop 设置 → Docker Engine
在 JSON 配置里添加
insecure-registries,示例:
{
"registry-mirrors": [],
"insecure-registries": [
"192.168.1.100",
"harbor.local:8080"
],
"builder": {
"gc": {
"defaultKeepStorage": "20GB"
}
},
"experimental": false
}
点击右下角 Apply & Restart 重启 Docker。
三、常见问题补充
1. 报错 daemon.json 格式错误
JSON 不能有多余逗号、注释;
键名必须双引号,不能单引号。
2. 配置后依然拉取镜像报错
排查顺序:
确认 docker 已重启,
docker info能看到 insecure 地址;宿主机防火墙放行 Harbor 端口;
确认 Harbor 服务确实监听 HTTP,未强制跳转 HTTPS;
若使用域名,检查
/etc/hosts解析是否正确。
3. 离线 / 信创环境多节点批量配置
可批量推送 /etc/docker/daemon.json,执行两行命令生效:
systemctl daemon-reload && systemctl restart docker
四、完整示例实操(IP:10.0.0.10 Harbor 80 端口)
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["10.0.0.10"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker info | grep "Insecure Registries"
五、K8s 额外场景(可选)
如果节点使用 containerd 而非 docker,配置文件路径不同: /etc/containerd/config.toml,需修改 [plugins."io.containerd.grpc.v1.cri".registry.configs] 配置 http 仓库,不要用 docker daemon.json。
原文链接
欢迎访问 小易撩挨踢