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。