首页/云/Docker 容器速查/insecure-registries 配置(内网 HTTP 仓库)
镜像与构建107 条

insecure-registries 配置(内网 HTTP 仓库)

让 Docker 客户端信任 HTTP 或无证书的内部注册表:写入 daemon.json 的 insecure-registries 并重启守护进程后生效。

Docker 容器速查云更新于 2026-10-13

配置解决什么问题

默认情况下 Docker 客户端只信任带合法证书的 HTTPS 注册表。对只有 HTTP 或使用自签证书的内部仓库,需要在守护进程配置文件 /etc/docker/daemon.json 中把地址写进 insecure-registries,并重启 docker 服务后客户端才会前往连接。这等于放弃对该仓库的传输加密与身份校验,只能作为受控内网里的过渡手段。

基本信息

用途让客户端信任非 HTTPS 或自签证书的注册表
配置位置/etc/docker/daemon.json(需 root 权限)
字段insecure-registries 数组,元素形如 host:port
生效方式重启 docker 服务,重启守护进程后才读取
安全前提仅限受控内网,且仓库本身可信任

典型使用场景

  • 内网测试仓库(registry:2 未配 TLS)需要先跑通推送流程
  • 证书链临时不可用时应急放行,随后换正式证书
  • 使用自签证书但暂时没把 CA 装入系统信任库
  • 离线或隔离网络中自建仓库分发镜像
  • 迁移期新旧仓库地址并存,需要同时可用

配置与应用

配置与应用
{
  "insecure-registries": ["registry.internal:5000", "10.10.0.8:5000"]
}

校验与验证

校验与验证
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak   # 改前备份
sudo python3 -m json.tool /etc/docker/daemon.json             # 先校验 JSON 语法
sudo systemctl restart docker                                 # 重载守护进程配置
docker info | grep -A3 'Insecure Registries'                  # 确认配置已读入
docker push registry.internal:5000/team/app:1.0               # 验证推送是否成功

报错与处置对照

现象原因处置
server gave HTTP response to HTTPS client仓库是 HTTP,客户端按 HTTPS 连接加入 insecure-registries 或给仓库配置 TLS
x509: certificate signed by unknown authority自签证书未被信任把 CA 装入系统信任库,或临时用该参数过渡
改完配置没有任何变化未重启守护进程systemctl restart docker
docker 服务起不来daemon.json JSON 语法错误用 json.tool 校验后修正
地址要按 host:port 原样写入,域名与 IP 被视为不同条目,写错一个字符就等于没有配置。
长期方案是给仓库配置受信证书并全部走 HTTPS,把该字段只保留在离线或隔离环境的例外清单里。
该配置只改变客户端侧的信任判断,不会让仓库本身变得安全;仓库若需要对外提供服务,仍要配置 TLS 证书、账号与访问控制。

易错点

  • daemon.json 语法写坏会导致守护进程启动失败、全部容器不可用,改前备份、改后先用 json.tool 校验再重启
  • 只重启客户端或重启容器都不会生效,必须重启 docker 守护进程本身
  • 把跳过 TLS 当作长期方案:镜像拉取链路可被中间人替换,正式环境应改用受信证书
  • 忽略重启影响:重启守护进程可能中断正在运行的容器,业务高峰改配置要安排窗口

数据来源与参考

  • Docker 官方文档:Docker daemon 配置 insecure-registries(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌