daemon.json不支持ip白名单,仅能配置监听地址(如tcp://192.168.1.100:2375),访问控制须由防火墙(iptables/firewalld)、反向代理或网络隔离等外部机制实现。
daemon.json 本身不支持 ip 白名单功能。它只能配置监听地址(如 tcp://0.0.0.0:2375 或 tcp://192.168.1.100:2375),但无法限制哪些客户端 ip 可以连接——这属于网络层或防火墙职责,不是 docker 守护进程的内置能力。
为什么 daemon.json 不能设白名单
Docker 的 daemon.json 中 hosts 字段只决定“监听在哪”,不提供访问控制:
-
"tcp://0.0.0.0:2375"→ 监听所有网卡,任何能路由到该端口的 IP 都可尝试连接 -
"tcp://127.0.0.1:2375"→ 仅本地回环可连,等效于禁用远程 -
"tcp://192.168.1.100:2375"→ 仅监听该网卡 IP,但同网段所有机器仍可访问(仍是无认证裸端口)
真正实现白名单的三种可靠方式
必须在 Docker 外部加管控层:
-
系统防火墙(推荐首选):用
iptables或firewalld限制 2375 端口仅允特定 IP 访问
示例(firewalld):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.50" port port="2375" protocol="tcp" accept'sudo firewall-cmd --reload -
反向代理 + 访问控制:用 Nginx 或 Traefik 代理 2375 端口,配置 IP 白名单或 Basic Auth
注意:需启用 HTTPS 并终止 TLS,否则明文转发仍不安全 - 绑定到内网专用 IP + 网络隔离:不监听 0.0.0.0,而是绑定到一个仅内网可达的 IP(如 10.10.0.10),再配合交换机 ACL 或云平台安全组封禁公网入口
重要提醒:别跳过身份认证
即使加了 IP 白名单,只要 2375 端口暴露且无认证,一旦白名单内某台机器被入侵,攻击者就可完全接管 Docker。生产环境必须叠加以下任一措施:
- 启用 TLS 双向认证(CA 签发 server/client 证书)
- 改用带鉴权的 API 网关(如 Portainer Agent + RBAC,或自建带 JWT 校验的中继服务)
- 彻底避免暴露 2375,改用 SSH 隧道临时转发:
ssh -L 2375:/var/run/docker.sock user@docker-host,本地用docker -H tcp://localhost:2375
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











