kekru/docker-remote-api-tls本镜像通过容器化方式提供带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 [***]DOCKER_HOST和DOCKER_CERT_PATH为实际值./dockerRemote ps克隆仓库:
bashgit clone [***] 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 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务