无法在远程主机运行Docker容器:Docker Compose SSH连接报错
问题描述
我尝试通过SSH连接,用Docker Compose在远程服务器上以Docker容器形式部署PHP网站和Nginx服务器。执行命令:
docker-compose -H ssh://<username>@<**.***.**.***> up -d
出现如下错误:
[+] Building 0.0s (0/0) [+] Building 0.0s (0/0) [+] Building 8.0s (2/2) FINISHED => ERROR [internal] load build definition from Dockerfile 5.0s => CANCELED [internal] load .dockerignore 5.0s ------ > [internal] load build definition from Dockerfile: ------ failed to dial gRPC: command [ssh -l username-- **.***.**.*** docker system dial-stdio] has exited with exit status 1, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=
我的Dockerfile内容:
FROM php:8.0.2-fpm RUN apt-get update && apt-get install -y \ git \ curl \ zip \ vim \ unzip WORKDIR /var/www
docker-compose.yml内容:
version: '3.8' services: app: build: context: ./ dockerfile: Dockerfile container_name: programwithgio-app restart: always working_dir: /var/www/ volumes: - ../src:/var/www nginx: image: nginx:1.19-alpine container_name: programwithgio-nginx restart: always ports: - 8000:80 volumes: - ../src:/var/www - ./nginx:/etc/nginx/conf.d
解决方案
从错误信息看,核心问题是SSH连接远程Docker daemon时出现故障,以下是排查和修复步骤:
1. 修正SSH连接URL格式
错误日志里的命令显示username--多了一个短横线,说明你的-H参数格式有误。正确的远程Docker连接URL应该是:
docker-compose -H ssh://<username>@<服务器IP> up -d
确保用户名和IP之间只有一个@符号,无多余字符。
2. 配置SSH免密登录
Docker Compose通过SSH连接远程daemon时,需要无密码登录权限:
- 先手动测试SSH连接:
ssh <username>@<服务器IP>,如果需要输入密码,执行以下步骤配置免密:
再次测试SSH连接,确认无需输入密码即可登录。ssh-keygen -t ed25519 # 一路回车生成密钥对 ssh-copy-id <username>@<服务器IP> # 将公钥上传到远程服务器
3. 检查远程服务器Docker版本
错误提示要求远程主机安装Docker 18.09或更高版本,登录远程服务器执行:
docker --version
如果版本过低,升级到最新稳定版。
4. 确认本地文件路径与权限
你的docker-compose.yml中,app服务使用../src作为卷挂载目录:
- 确保本地的
../src目录存在,且当前用户有读取权限。 - Docker Compose会把本地构建上下文(当前目录)通过SSH传到远程,所以要确保Dockerfile、docker-compose.yml等文件无权限问题。
5. 改用Docker上下文(推荐)
为避免每次输入-H参数,可配置Docker上下文:
docker context create remote-server --docker "host=ssh://<username>@<服务器IP>" docker context use remote-server
之后直接执行docker-compose up -d即可,无需再指定远程主机。
内容的提问来源于stack exchange,提问作者Jetug
相关产品推荐
相关产品推荐

