Docker-compose no se puede conectar a través de calcetines-proxy al host remoto SSH

Docker-compose no se puede conectar a través de calcetines-proxy al host remoto SSH

Estoy intentando implementar contenedores usando docker-composeun servidor remoto a través de SSH. Solo se puede acceder al servidor remoto SSH a través del proxy SOCKS. Creé ~/.ssh/configcon una configuración SOCKS válida para eso:

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 configuración funciona bien: puedo conectarme a través de proxy usando ssh <my.host>el comando.

Luego creé el contexto Docker y lo probé:

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

Pero cuando intento usar este contexto con docker-compose, falla con el error:

$ 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

Además, intenté usar DOCKER_HOSTel entorno pero obtuve el mismo error: env DOCKER_HOST="ssh://<my-host>" docker-compose ps.

Entonces parece que el problema se docker-composedebe a que los comandos puros dockerfuncionan correctamente. ¿Cuál podría ser el problema aquí y cómo puedo solucionar este comportamiento?

Versión del cliente Docker: 20.10.7
Versión del servidor Docker (remoto): 19.03.12
Versión de redacción de Docker:1.29.2

Respuesta1

Parece que el método ssh no marcó ~/.ssh/config, hay otra forma de reenviar el Docker Sock remoto al puerto 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

Entonces:

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

información relacionada