6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 289
1

Управление прогой в Docker

13.11.2022, 01:35. Показов 1019. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте! Пробую разобраться с докером и для примера написал маленькую консольную прогу, которая при запуске предлагает сделать выбрать из нескольких вариантов - нажмите 0,1,2 и т.д. Этот текст я могу увидеть в докере. Но я не нашел инфы можно ли из докера управлять прогой? Т.е. можно ли из докера выбрать из предложенных вариантов? У меня Docker Desktop.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2022, 01:35
Ответы с готовыми решениями:

Не могу создать образ Docker, подскажите как сделать. Вылазить ошибка. docker-file. Новичок в докере
Если можно обясните как строить докер файл. столько видео посмотрел ничего не понял Step 4/5 :...

Docker, IP Host -> Docker responce
есть некий сервис достучатся к которому возможно по IP (но только через VPN), задался вопросом, а...

HELP с прогой
Кароче надо помочь написать не сложную програмку. Буду очень благодарен. Использовать плиз ФАЙЛЫ...

Помогите с прогой.
Всем привет. Я только начал изучать си++, поэтому еще много незнаю... Я решил написать прогу... Она...

Помогите с прогой
помогите с задачкой плизз!!! Разработать программу для реализации алгоритма сортировки подсчетом...

6
3458 / 2470 / 695
Регистрация: 02.08.2011
Сообщений: 6,692
13.11.2022, 02:04 2
Только если запустить контейнер c interactive terminal:
Bash
1
docker run -it <image_id>
0
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
14.11.2022, 07:48 3
Если контейнер ждет ввода на stdin, его можно послать через socat. Например, если программа
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/local/bin/bash
 
echo "Please provide your input [1, 2, 3]: "
read onetwothree
 
case $onetwothree in
    1 )
        echo "you chose one, sleeping for 30 seconds now"
        sleep 30 ;;
    2 )
        echo "you chose two, sleeping for 30 seconds now"
        sleep 30 ;;
    3 )
        echo "you chose three, sleeping for 30 seconds now"
        sleep 30 ;;
esac
echo "bye!"
а Dockerfile
Код
FROM bash
COPY super-program.sh /
CMD ["bash", "/super-program.sh"]
то сбилдив и запустив контейнер
Код
docker build . -t sf_test
docker run -id --rm --name input_cont sf_test
можем проверить, что код ожидает ввода, как и задумано
Код
docker logs input_cont
Please provide your input [1, 2, 3]:
и послать ввод можно вот так
Код
echo 3 | socat EXEC:"docker attach input_cont",pty STDIN
теперь лог выглядит вот так
Код
docker logs input_cont
Please provide your input [1, 2, 3]: 
you chose three, sleeping for 30 seconds now
Если вместо того, чтобы просто послать ввод, нужно подсоединиться к контейнеру
Код
echo 2 | docker attach input_cont
you chose two, sleeping for 30 seconds now
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 289
14.11.2022, 13:52  [ТС] 4
Прогу сделал с visual studio 2019. Запускаю в докере. В логах сразу же отображается "Выберите команду 1 - ....."
Но дальше чтобы я не пробовал, ничего не подходит. Echo 0 - на следующей строке просто отображает 0, но команда программы не выполняется. Если "echo 3 | socat EXEC:"docker attach input_cont",pty STDIN" - то в ответ получаю, что команда socat не найдена
Пробовал и в консоле самого докера, и в консоле студии результат один
0
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
14.11.2022, 17:34 5
Все предыдущее писалось с расчетом на то, что у Вас linux. Если это не так (VS 2019) предполагаю, что если socat-a в windows нет.

Добавлено через 1 минуту
Что должно произойти в результате того, что Вы послали команду в контейнер. Может всё-таки api, а не консольный ввод?
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 289
14.11.2022, 17:42  [ТС] 6
Что должно произойти в результате того, что Вы послали команду в контейнер. Может всё-таки api, а не консольный ввод?
я надеялся получить в логах введенное значение, например 0, и результат работы проги - "Вы нажали 0".))) Но в логах появляется только начальный текст программы.
А про API не слышал. Не могли бы вы дать ссылку на статейку для чайников по этому вопросу?
0
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
14.11.2022, 20:35 7
завел VM винды, написал вот такое чудо (прости Господи)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
set /p ONETWOTHREE="Please choose a number [1,2,3]: "
 
if %ONETWOTHREE%==1 (
    echo "One"
) else if %ONETWOTHREE%==2 (
    echo "Two"
) else if %ONETWOTHREE%==3 (
    echo "Three"
)
echo "Bye!"
вот такой Dockerfile
Код
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
COPY ./choose.bat ./choose.bat
CMD choose.bat
build, запуск
Код
docker build -t test_shell .
docker run --name win_cont -id test_shell
посылаю ввод, смотрю логи
Код
echo 2 | docker attach win_cont

docker logs win_cont
Please choose a number [1,2,3]: "Two"
"Bye!"
0
14.11.2022, 20:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2022, 20:35
Помогаю со студенческими работами здесь

Помочь с прогой
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;dos.h&gt; #include &lt;stdlib.h&gt; #include...

Помогите с прогой
Кароче надо помочь написать не сложную програмку. Буду очень благодарен. Использовать плиз ФАЙЛЫ...

Помогите с прогой
Не понимаю почему перестала запускаться.

Помощь с прогой
Вычислить среднее арифметическое положительных элементов с четными индексами и произведение...

помогите с прогой
всем привет! Помогите с прогой, вот условие: Вводится N (N&gt;5) пар чисел, представляющих ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru