Невозможно выполнить вложенную команду на удаленном хосте через туннель SSH.

Я запускаю следующую команду в своем задании GitLab CI:

      ssh ${REMOTE_HOST} "docker restart $(docker ps --format '{{.Names}}' | grep '^backend')"

Проблема в том, что он возвращает мне следующую ошибку:

      /usr/bin/bash: line 156: docker: command not found
"docker restart" requires at least 1 argument.

Я знаю, что он существует и работает на удаленном хосте, потому что я могу войти в оболочку хоста и самостоятельно выполнять команды Docker.

Насколько я понимаю, ошибка кажется двойной: она сообщает мне, что «команда Docker не найдена», а затем сообщает мне, что «перезапуск Docker требует как минимум 1 аргумент».

Итак, я предполагаю, что исполняемый файл не найден для вложенной команды, которая возвращает ошибку «docker: команда не найдена», и поскольку она не возвращает имена контейнеров, тоdocker restartтакже терпит неудачу.

Я также попробовал заменить на/usr/bin/dockerвнутри вложенной команды, но безрезультатно.

Я знаю, что туннель ssh работает правильно, потому что непосредственно перед этой командой я выполняю следующие две команды, которые работают нормально:

      ssh ${REMOTE_HOST} "docker pull my_registry/backend:${VERSION} "
ssh ${REMOTE_HOST} "docker-compose -f docker-compose.yml up --detach --remove-orphans"

Итак, я действительно считаю, что проблема в том, чтоdockerдля внутренней команды не найден исполняемый файл.

0 ответов

Другие вопросы по тегам