#docker
#docker
Вопрос:
Мне нужно использовать программу, написанную кем-то другим в контейнере Docker (Docker Desktop версии 19.03.12 в Windows 10). Я создал файл сценария (bt.sh ) для запуска сторонней программы с правильными параметрами. Он находится в контейнере, в папке /root/FrMG_Files/, вместе с файлами данных, подлежащими обработке. Я могу без проблем запустить скрипт из контейнера (./bt.sh ) из папки /root/FrMG_Files.
Я хочу автоматизировать процесс, запустив скрипт с хоста Windows как часть большей последовательности. В Windows cmd или powershell я могу получить список файлов с помощью :
docker exec -it -w /root/FrMG_Files container_id dir
Я попытался запустить скрипт со многими вариантами, такими как
docker exec -it -w /root/FrMG_Files container_id ./bt.sh
docker exec -it -w /root/FrMG_Files container_id './bt.sh --cmd “command” host''
docker exec -it -w /root/FrMG_Files container_id "./bt.sh"
но ни один из них не сработал. Я получаю сообщение об ошибке:
Сбой выполнения OCI exec: сбой exec: container_linux.go: 349: запуск процесса контейнера вызвал «ошибку формата exec»: неизвестно
Скрипт запускается с
docker exec -it -w /root/FrMG_Files container_id bash ./bt.sh
Первая строка скрипта — echo «Я в контейнере», и это работает. Другие команды не работают (команда не найдена).
Я был бы очень признателен за помощь в этом.
Большое спасибо!
Комментарии:
1. Почему вы хотите это сделать? Вы хотите запустить сценарий оболочки, поэтому использование bash имеет смысл
2. Для хоста Windows попробуйте использовать файл сценария Windows .. может быть .cmd файл
3. У меня есть тексты для анализа, которые хранятся в Excel. Скрипт VBA создает текстовые файлы и скрипт bash, копирует файлы и скрипт в контейнер Docker. У меня есть синтаксический анализатор в контейнере. Скрипт вызывает анализатор с параметрами. Затем другой скрипт VBA создает файл tar с помощью Docker exec в cmd, копирует файл tar на хост, извлекает его и копирует результаты в Excel для многовариантного анализа. Он хочет запустить скрипт bash с помощью docker exec, чтобы иметь одну программу VBA. Теперь я запускаю код VBA, перехожу к контейнеру для запуска сценария и возвращаюсь к VBA для запуска последней части.