Estoy intentando implementar contenedores usando docker-compose
un servidor remoto a través de SSH. Solo se puede acceder al servidor remoto SSH a través del proxy SOCKS. Creé ~/.ssh/config
con 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_HOST
el entorno pero obtuve el mismo error: env DOCKER_HOST="ssh://<my-host>" docker-compose ps
.
Entonces parece que el problema se docker-compose
debe a que los comandos puros docker
funcionan 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:
ssh -NL localhost:23750:/var/run/docker.sock user@hostname
Entonces:
DOCKER_HOST="tcp://localhost:23750" docker-compose build