1. 一个【Critical】告警背后的真实含义
上周朋友发来一张告警截图,标题写着【Critical】docker unauthorized 2375。他第一反应是“Docker 连不上了,要不要重装”,我远程上去看了一眼就告诉他:问题不在客户端,在监听地址上。后来一查,daemon.json 里配了 tcp://0.0.0.0:2375,云安全组又把 2375 对全网放行。等于把 Docker 的控制权直接摆在了公网上,任何人不带密码就能刷开这扇门。今天不聊虚的,就围绕 docker、2375、unauthorized 这三个关键词,把端口是怎么被“敲开”的、告警为什么是 Critical、拿到告警之后应该怎么处置,完整讲一遍。这篇内容既适合刚接触 Docker 的新手,也适合正在排查生产环境告警的运维朋友。
1.1 2375 是 Docker 的“裸奔口”,2376 才是加密口
Docker 客户端和守护进程(dockerd)之间不是靠什么魔法通信的,它走的是一套 REST API。默认情况下,这套 API 只监听在本地的一个 unix socket 上,也就是 /var/run/docker.sock。只要你的 Linux 用户有权限访问这个 socket,你就能完整控制这台机器上的 Docker。而 2375 这个端口,是 Docker 官方预留的 TCP“调试”端口,它和 2376 是一对。2375 代表“无 TLS 加密”,2376 代表“启用 TLS 加密”。
很多人看到网上教程写“监听 2375 端口,方便远程管理 Docker”,就照着配了。结果是把整个 Docker 控制面从本机文件系统搬到了公网 TCP 上。用大白话讲,2375 就像你把家里大门的钥匙直接插在锁孔里,然后人出门了。别人根本不需要撬锁,推门就进。2375 默认没有认证、没有加密、没有授权校验,这就是为什么安全产品只要检测到这块暴露,就会直接打上 Critical 级别告警。
1.2 为什么 Docker API 被调用等同于 root 权限被拿走
很多开发同学觉得“就算 Docker 端口暴露了,顶多被别人拉几个容器跑一跑,损失不大”。这个想法非常危险。dockerd 进程本身是以 root 身份运行的,Docker API 的所有能力都继承自 root。通过 API,远端可以调用 POST /containers/create,把宿主机根目录 / 挂载到容器里,然后执行任意命令。说直白一点,攻击者只要发一个请求,就能在你服务器上创建这样一个容器:把整个磁盘读走、写入 SSH 公钥、安装后门脚本。
更讽刺的是,这种“未授权访问”通常不会返回 401 unauthorized。因为 dockerd 没有启用任何认证时,它会直接接受请求并执行。你看到 401,反而说明系统里有别的拦截层。所以当你收到“docker unauthorized 2375”这类告警,千万别以为“有个 401 挡着,入侵失败”,大概率是安全产品检测到了端口暴露,而“unauthorized”是它在描述这种行为属于未授权访问。先按最坏情况做排查,总没错。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 先把 unauthorized 拆开:你遇到的到底是哪一类
排查这类告警,最怕的就是把“未授权访问”和“401 unauthorized”混为一谈。这两个词看起来像,解决路径完全不一样。如果方向错了,你能白忙一整天。
2.1 “未授权访问”与“401 unauthorized”是两回事
“未授权访问”描述的是服务器没有验证调用者身份就放行了。这是 Docker 2375 暴露最典型的问题,解决方式是“关闭暴露”或者“启用 TLS 证书认证”。而 HTTP 401 unauthorized 是服务端返回的一个标准状态码,意思是“你请求了,但你没有给我能证明身份的凭证”。它反而说明服务端是有认证逻辑的,只是你的凭证不对。
所以收到告警后第一步,先搞清楚是谁给你返回的 401。是 Docker daemon 本身?是 Nginx 反向代理?是本地的 Docker Registry 镜像仓库?还是公司内部某个统一网关?不同来源的 401,排查方向天差地别。以我看到的经验,很多热搜词里提到的 unexpected status 401 unauthorized: incorrect api key provided,其实是访问第三方 SaaS 服务或镜像仓库接口时 API Key 填错了,和 Docker 2375 端口暴露是两码事。不要因为都带 unauthorized 就混在一个问题上处理。
2.2 四种常见的 401 场景,逐个对号入座
我整理了一下实际运维中最常撞见的四种 401 场景,你可以按症状快速归类。
第一种,客户端用 docker -H tcp://IP:2375 info 连上去,报错 unauthorized: incorrect username or password 或 `certificate requir
