Docker-compose não pode se conectar via meias-proxy ao host remoto SSH

Docker-compose não pode se conectar via meias-proxy ao host remoto SSH

Estou tentando implantar contêineres usando docker-composeum servidor remoto via SSH. O SSH do servidor remoto pode ser acessado apenas via proxy SOCKS. Criei ~/.ssh/configcom configuração SOCKS válida para isso:

Host <my.host>
  HostName <my.host>
  ProxyCommand socks-connect -S <socks-user>@<socks-host>:<socks-port> %h %p
  Port <ssh-port>
  User <ssh-user>
  IdentityFile ~/.ssh/<ssh-key>

Esta configuração está funcionando bem: posso me conectar via proxy usando ssh <my.host>o comando.

Então criei o contexto Docker e testei:

$ docker context create remote --docker "host=ssh://<my.host>"
$ docker --context=remote ps
<list of running containers on remote host>

Mas quando tento usar esse contexto com docker-compose, ele falha com erro:

$ docker-compose --context=remote --verbose ps
ERROR: Got error response from SOCKS server: 4 (Host unreachable)
FATAL: failed to begin relaying via SOCKS
kex_exchange_identification: Connection closed by remote host

Além disso, tentei usar DOCKER_HOSTo ambiente, mas recebi o mesmo erro: env DOCKER_HOST="ssh://<my-host>" docker-compose ps.

Parece que o problema está docker-composeporque os comandos puros dockerfuncionam corretamente. Qual poderia ser o problema aqui e como posso corrigir esse comportamento?

Versão do cliente Docker: 20.10.7
Versão do servidor Docker (remoto): 19.03.12
Versão do Docker Compose:1.29.2

Responder1

Parece que o método ssh não verificou ~/.ssh/config, há outra maneira de encaminhar o docker sock remoto para a porta tcp local:

https://code.visualstudio.com/docs/remote/troubleshooting#_using-an-ssh-tunnel-to-connect-to-a-remote-docker-host

ssh -NL localhost:23750:/var/run/docker.sock user@hostname

Então:

DOCKER_HOST="tcp://localhost:23750" docker-compose build

informação relacionada