Docker 中 客户端与守护进程 怎么配置TLS加密

星磊同学_3544

星磊同学_3544

2026-09-23

880人浏览

原创

核心是双向证书信任:服务端需提供ca签发的服务器证书,客户端需持有该ca根证书并可选配客户端证书;分三步——生成证书(注意san匹配)、配置daemon.json启用tlsverify:true、客户端设置docker_tls_verify与证书路径。

客户端与 docker 守护进程之间配置 tls 加密,核心是双向证书信任:服务端(daemon)需提供由可信 ca 签发的服务器证书,客户端需持有该 ca 的根证书,并可选配客户端证书用于双向认证。整个过程分三步走:生成证书、配置 daemon、配置 client。

一、生成 TLS 证书(CA + server + client)

所有证书建议统一用 4096 位 RSA 密钥,有效期设为 3–5 年。关键点是服务器证书的 CN(Common Name)或 SAN(Subject Alternative Name)必须匹配客户端连接时使用的主机名或 IP,否则握手失败。

  • 生成 CA 私钥和自签名根证书:
    openssl genrsa -out ca-key.pem 4096
    openssl req -new -x509 -days 1825 -key ca-key.pem -out ca.pem -subj "/CN=MyDockerCA"
  • 生成服务器私钥和 CSR(注意替换 $HOST 为实际 IP 或域名,如 192.168.1.100docker.example.com):
    openssl genrsa -out server-key.pem 4096
    openssl req -subj "/CN=$HOST" -new -key server-key.pem -out server.csr
  • 用 CA 签发服务器证书(含 SAN 支持,推荐):
    echo "subjectAltName = IP:$HOST,DNS:$HOST" > extfile.cnf
    openssl x509 -req -days 1825 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
  • 生成客户端证书(如需 mTLS):
    openssl genrsa -out client-key.pem 4096
    openssl req -subj '/CN=client' -new -key client-key.pem -out client.csr
    echo "extendedKeyUsage = clientAuth" > extfile-client.cnf
    openssl x509 -req -days 1825 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -extfile extfile-client.cnf

二、配置 Docker 守护进程启用 TLS

修改 /etc/docker/daemon.json,启用 TLS 并指定证书路径。务必保留 unix:///var/run/docker.sock 以兼容本地命令行工具。

minimax-mcp-docker版(适配极空间)
minimax-mcp-docker版(适配极空间)

MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。

下载
  • 典型配置示例:
    {<br>  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"],<br>  "tls": true,<br>  "tlscert": "/etc/docker/server-cert.pem",<br>  "tlskey": "/etc/docker/server-key.pem",<br>  "tlscacert": "/etc/docker/ca.pem",<br>  "tlsverify": true<br>}
  • 若使用 systemd,还需检查覆盖配置(/etc/systemd/system/docker.service.d/override.conf),确保 ExecStart 指向 dockerd 且无冲突参数
  • 重启生效:
    sudo systemctl daemon-reload && sudo systemctl restart docker
  • 防火墙放行 TCP 2376 端口(仅限可信网络)

三、配置 Docker 客户端信任链

客户端无需安装 Docker 引擎,只需正确放置证书并设置环境变量即可安全连接远程 daemon。

  • 将以下三个文件复制到客户端机器(如 ~/.docker/certs/):
    ca.pem(CA 根证书)
    client-cert.pem(客户端证书)
    client-key.pem(客户端私钥)
  • 设置环境变量(Linux/macOS):
    export DOCKER_HOST=tcp://<server-ip>:2376</server-ip>
    export DOCKER_TLS_VERIFY=1
    export DOCKER_CERT_PATH=$HOME/.docker/certs
  • 验证是否成功:
    docker --tlsverify version 应返回远程 daemon 版本信息;
    docker --tlsverify info | grep "Server Version" 可进一步确认
  • 如仅需单向认证(服务端验客户端,客户端不验服务端),可省略 client-cert.pemclient-key.pem,但 DOCKER_TLS_VERIFY=1ca.pem 不可少

四、常见问题排查要点

TLS 连接失败多数源于证书或配置细节偏差,重点检查:

  • 服务器证书中 CNSAN 是否与 DOCKER_HOST 中的地址完全一致(IP vs 域名、有无端口)
  • ca.pem 在客户端是否放在 DOCKER_CERT_PATH 下且权限为 644;私钥(client-key.pem)权限必须为 600
  • 守护进程日志(journalctl -u docker)是否有 x509: certificate is valid for ... not ... 类报错
  • 客户端执行 openssl s_client -connect <ip>:2376 -CAfile ca.pem</ip> 可直连测试 TLS 握手是否通过

相关文章

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

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

下载

相关标签:

docker

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

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

625

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4319

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5197

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

1933

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

199

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

371

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

340

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

265

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

365

15

热门下载

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

精品课程

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

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

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

共0课时 | 0人学习