如何让DOCKER_HOST读取~/.ssh/config配置实现远程docker连接?
问题原因
你用的docker-compose 1.25.0是基于Python实现的旧版本,其依赖的paramiko库默认不会读取~/.ssh/config配置,因此会把你填写的hostname别名当成真实域名去解析,自然抛出域名无法解析的错误。你之前尝试使用DOCKER_CERT_PATH变量也有误,该变量是用于Docker TLS加密连接的配置,和SSH密钥无关,因此会触发TLS参数错误。
可行解决方法
方案1:直接填写完整SSH连接信息(无需修改软件版本)
把配置里的真实信息直接写到DOCKER_HOST变量中,同时指定SSH密钥对应的环境变量即可:
DOCKER_HOST="ssh://ubuntu@你的真实主机地址" DOCKER_SSH_IDENTITY_FILE=~/.ssh/google_compute_engine docker-compose up -d
方案2:升级docker-compose到2.x及以上版本
docker-compose 2.x之后改用Go语言实现,复用Docker原生的SSH连接逻辑,会自动读取~/.ssh/config里的配置,升级后直接执行你原来的命令即可正常运行:
DOCKER_HOST="ssh://hostname" docker-compose up -d
方案3:使用SSH代理简化配置
先将密钥添加到本地SSH代理中:
ssh-add ~/.ssh/google_compute_engine
之后直接使用带真实地址的DOCKER_HOST变量即可,不需要额外指定密钥参数:
DOCKER_HOST="ssh://ubuntu@你的真实主机地址" docker-compose up -d
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

