
本镜像通过容器化方式提供带TLS客户端认证的Docker Remote API访问能力,客户端必须通过TLS证书进行身份验证。作为直接在Docker守护进程上配置TLS的替代方案,本镜像简化了安全暴露Docker Remote API的流程,适用于需要安全远程管理Docker主机的场景。
准备工作
生成证书文件
需准备CA根证书、服务器证书及私钥,可通过以下方式生成:
整理证书文件
将以下文件放入本地目录(后续挂载到容器):
ca-cert.pem # CA根证书 server-cert.pem # 服务器证书 server-key.pem # 服务器私钥
客户端需使用
ca-cert.pem、cert.pem(客户端证书)和key.pem(客户端私钥)进行认证
部署配置
创建docker-compose.yml文件:
yamlversion: "3.4" services: remote-api: image: kekru/docker-remote-api-tls:v0.4.0 ports: - 2376:443 # 标准Docker TLS端口映射 volumes: - <本地证书目录>:/data/certs:ro # 只读挂载证书目录 - /var/run/docker.sock:/var/run/docker.sock:ro # 只读挂载Docker套接字
启动服务
bash# 使用Docker Compose启动 docker-compose up -d # 或使用Docker Swarm部署 docker stack deploy --compose-file=docker-compose.yml remoteapi
服务启动后,Docker Remote API将通过https://<主机IP>:2376暴露,客户端需使用cert.pem和key.pem进行认证。
准备工作
无需提前生成证书,镜像将自动创建CA根证书、服务器证书、客户端证书及私钥。需准备:
部署配置
创建docker-compose.yml文件:
yamlversion: "3.4" services: remote-api: image: kekru/docker-remote-api-tls:v0.4.0 ports: - 2376:443 environment: - CREATE_CERTS_WITH_PW=supersecret # 证书加密密码(必填) - CERT_HOSTNAME=remote-api.example.com # API访问主机名(必填) # 可选:自定义证书有效期 # - CERT_EXPIRATION_DAYS=365 # 服务器/客户端证书有效期(默认365天) # - CA_EXPIRATION_DAYS=900 # CA根证书有效期(默认900天) volumes: - <本地证书目录>:/data/certs # 读写挂载,用于存储生成的证书 - /var/run/docker.sock:/var/run/docker.sock:ro
启动服务
bash# 使用Docker Compose启动 docker-compose up -d # 或使用Docker Swarm部署 docker stack deploy --compose-file=docker-compose.yml remoteapi
证书文件位置
生成的证书将存储在<本地证书目录>:
ca-cert.pem、server-cert.pem、server-key.pem<本地证书目录>/client/ca.pem、cert.pem、key.pem| 环境变量名 | 描述 | 默认值 | 优先级 |
|---|---|---|---|
CREATE_CERTS_WITH_PW | 证书加密密码(自动生成证书时必填) | 无 | 低于CERTS_PASSWORD_FILE |
CERTS_PASSWORD_FILE | 存储证书密码的Docker Secret文件路径(绝对路径) | 无 | 高于CREATE_CERTS_WITH_PW |
CERT_HOSTNAME | 服务器证书中的主机名(自动生成证书时必填,支持逗号分隔多个主机/IP) | 无 | - |
CERT_EXPIRATION_DAYS | 服务器和客户端证书的有效期(天) | 365 | - |
CA_EXPIRATION_DAYS | CA根证书的有效期(天) | 900 | - |
ca-cert.pem、cert.pem、key.pem)<本地证书目录>/client/通过环境变量指定证书路径和API地址:
bashexport DOCKER_HOST=tcp://remote-api.example.com:2376 export DOCKER_TLS_VERIFY=1 export DOCKER_CERT_PATH=<客户端证书目录> # 包含ca.pem、cert.pem、key.pem的目录
测试连接:
bashdocker ps # 应返回远程主机上的容器列表
dockerRemote脚本项目提供dockerRemote脚本简化客户端访问:
wget https://raw.githubusercontent.com/kekru/docker-remote-api-tls/master/dockerRemoteDOCKER_HOST和DOCKER_CERT_PATH为实际值./dockerRemote ps克隆仓库:
bashgit clone https://github.com/kekru/docker-remote-api-tls.git cd docker-remote-api-tls
启动服务(自动生成证书模式):
bash# 修改docker-compose.yml中的CERT_HOSTNAME为本地IP或主机名 docker-compose up -d
测试API访问:
bash# 使用项目提供的dockerRemote脚本 ./dockerRemote ps
CERT_EXPIRATION_DAYS和CA_EXPIRATION_DAYS)CERTS_PASSWORD_FILE)您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务