Docker daemon.json 怎么配置远程 API 的访问控制策略

雨丽大大_3075

雨丽大大_3075

2026-10-26

236人浏览

原创

要通过daemon.json配置Docker远程API访问,核心是设置hosts字段指定监听地址(如"tcp://192.168.1.100:2375"),禁用0.0.0.0暴露,强制启用TLS加密并配合防火墙IP白名单,实现网络层最小权限控制。

要通过 daemon.json 配置 docker daemon 的远程 api 访问控制策略,核心是明确监听地址、限制访问范围,并配合系统级防护措施。docker 本身不内置用户认证或 rbac,所以“访问控制”主要靠网络层约束 + 加密通信 + 主机防火墙协同实现。

指定监听地址与协议组合

在 /etc/docker/daemon.json 中设置 hosts 字段,决定 daemon 接收哪些连接方式:

  • 仅限本地管理 + 特定内网 IP 远程访问: {"hosts": ["unix:///var/run/docker.sock", "tcp://192.168.1.100:2375"]} (把 0.0.0.0 换成实际可信的宿主机内网 IP,避免暴露给整个子网)
  • 保留本地 socket,禁用所有 TCP 远程访问: 删除或不写 tcp:// 条目,仅保留 "unix:///var/run/docker.sock"
  • 必须开放全网?至少绑定到私有网段接口: 如宿主机有 10.0.2.15(VirtualBox)或 172.17.0.1(Docker bridge),可设为 "tcp://10.0.2.15:2375"

强制启用 TLS 加密(关键安全步骤)

明文 TCP(如 tcp://0.0.0.0:2375)等同于裸奔,生产环境必须启用 TLS。此时 daemon.json 需补充证书路径:

  • "tls": true — 启用 TLS
  • "tlscacert": "/etc/docker/certs/ca.pem" — 根证书位置
  • "tlscert": "/etc/docker/certs/server.pem" — 服务端证书
  • "tlskey": "/etc/docker/certs/server-key.pem" — 服务端私钥
  • "tlsverify": true — 强制客户端校验证书(推荐开启)

配置后,客户端必须用 docker -H tcp://x.x.x.x:2376 --tlsverify ... 连接(注意端口常改为 2376 表示 TLS)。

配合系统防火墙做 IP 白名单

daemon.json 无法过滤 IP,必须靠宿主机防火墙补位:

Json Repair Kit
Json Repair Kit

使用 Node.js 评估修复格式错误的 JSON,自动纠正尾随逗号、单引号、未加引号的键等常见问题,实现文件规范化。

下载
  • CentOS/RHEL(firewalld):
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.50" port port="2375" protocol="tcp" accept'
    firewall-cmd --reload
  • Ubuntu/Debian(ufw):
    ufw allow from 192.168.1.50 to any port 2375 proto tcp

禁止开放 0.0.0.0/0,哪怕在内网也建议精确到运维跳板机或 CI 服务器 IP。

不推荐的“伪控制”写法

以下配置看似限制,实则无效或危险,应避免:

  • "hosts": ["tcp://127.0.0.1:2375"] —— 只监听本地回环,外部根本连不上
  • "hosts": ["tcp://0.0.0.0:2375"] 且无 TLS + 无防火墙 —— 等同于把 root 权限交给互联网
  • 试图在 daemon.json 里写 "authz-plugin" 或 "userland-proxy" 控制 API 权限 —— 这些字段不用于访问控制,且插件支持已弃用

真正的最小权限原则,是“默认拒绝 + 显式放行 + 加密传输”,daemon.json 只管“听谁”,不管“信谁”——后者得靠 TLS 和防火墙联手完成。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker js json daemon

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4516

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1375

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1798

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

10063

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

980

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2804

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1589

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

4829

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

2795

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习