Задать вопрос

Почему docker exec выполняется очень долго и есть ли способ ее ускорить?

Я создаю контейнер:
docker run -it -d --env TIMEFORMAT=\n%3R --name python_container -v (текущая директория)\temp:/temp docker_python_runner bash


Через команду exec запускаю скрипт внутри контейнера:
docker exec -i python_container bash -c "time python temp/temp_file.py" 2>&1


Допустим, это будет скрипт, который просто складывает 2 числа (например, stdin: 5 10).

Вывод:
15
0.025


Т.е результат работы программы: 15, время выполнения скрипта: 0.025, при том что общее время выполнения команды exec - 1.0805566310882568

Все команды я запускаю из python скрипта при помощи библиотеки subprocess:
result = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True, encoding='utf-8')
stdout, stderr = result.communicate(input=stdin, timeout=5)


Моя операционная система - Windows

Вообще все это делается для тестирования пользовательского кода => я запускаю одну и ту же exec команду раз 15 - 20. Как ускорить ее выполнение и может быть есть способ как то оптимизировать именно этот момент?
  • Вопрос задан
  • 291 просмотр
Подписаться 3 Средний 1 комментарий
Решения вопроса 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Под Windows приходится запускать Linux в виртуальной машине, чтобы запустить Docker контейнер (ведь Docker построен на Linux-овых Napespace и Cgroups), а это требует много ресурсов.

Попробуй сначала зайти в контейнер: docker exec -it python_container bash
И потом запускать скрипт: time python temp/temp_file.py

Попробуй использовать WSL2 - это должно изменить ситуацию в лучшую сторону, но всё равно до нативных показателей будет далековато.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы