Docker Over TLS 暴露远程 API
相关概念:Docker
如果确实要远程管理 Docker,优先考虑带 TLS 的方式,而不是把未加防护的 HTTP 端口直接暴露出去。
为什么不能直接开明文端口
Docker API 一旦裸奔,风险不是“小问题”,而是相当于把容器控制权直接暴露给外部。
所以如果要远程暴露,至少要满足:
- 有明确的使用场景
- 有证书
- 有受控网络边界
最小准备
通常需要这三类文件:
ca.pem:根证书cert.pem:服务端证书key.pem:服务端私钥
常见做法
修改 Docker 服务启动参数,让它同时监听本地 Unix Socket 和 TLS 端口:
/usr/bin/dockerd \
--tlsverify \
--tlscacert=/root/.docker/ca.pem \
--tlscert=/root/.docker/cert.pem \
--tlskey=/root/.docker/key.pem \
-H unix:///var/run/docker.sock \
-H tcp://0.0.0.0:2376然后:
systemctl daemon-reload
systemctl restart docker提醒
暴露的是 2376 这种 TLS 端口,不是裸奔的 2375。
即便用了 TLS,也仍然应该继续做:
- 防火墙白名单
- 最小暴露面
- 只在确实需要的环境开启
取舍
如果只是自己远程管理一台机器,很多时候直接用 SSH 隧道或内网管理方案会更省心。
只有在工具链明确依赖 Docker Remote API 时,才值得认真配置 Docker Over TLS。