Docker-compose не может подключиться через socks-proxy к удаленному хосту SSH

Docker-compose не может подключиться через socks-proxy к удаленному хосту SSH

Я пытаюсь развернуть контейнеры, используя docker-composeудаленный сервер через SSH. Доступ к удаленному серверу SSH возможен только через прокси SOCKS. Я создал ~/.ssh/configс допустимой конфигурацией SOCKS для этого:

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>

Эта конфигурация работает нормально: я могу подключиться через прокси с помощью ssh <my.host>команды.

Затем я создал контекст Docker и протестировал его:

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

Но когда я пытаюсь использовать этот контекст с docker-compose, возникает ошибка:

$ 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

Я также попробовал использовать DOCKER_HOSTenvironment, но получил ту же ошибку: env DOCKER_HOST="ssh://<my-host>" docker-compose ps.

Так что, похоже, проблема в docker-composeтом, что чистые dockerкоманды работают правильно. В чем может быть проблема и как исправить это поведение?

Версия клиента Docker: 20.10.7
Версия сервера Docker (удалённый): 19.03.12
Версия Docker compose:1.29.2

решение1

Похоже, метод ssh не проверил ~/.ssh/config, есть другой способ — перенаправить удаленный docker sock на локальный порт tcp:

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

Затем:

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

Связанный контент