Запустить процесс без фактического выполнения в контейнере с помощью nsenter

Подробности

Я хотел запустить процесс в контейнере, не выполняя его. Это связано с тем, что в контейнере могут быть установлены не все пакеты для выполнения команд. Например, если я хочу запустить команду, то, возможно, я не обнаружил стресса в контейнере и мне придется устанавливать его отдельно.

Я проверил несколько возможностей сделать это и обнаружил, что один из них - использовать nsenter.

Проблема

У меня есть контейнер Nginx, на котором я хочу запустить стресс-процесс, не выполняя его.

  • Я принес pid контейнера (это было 1212) и попытался выполнить следующие команды:
      # nsenter -t 1212 -i -p -n -u
# hostname
nginx-86c57db685-q47lq

Я проверил, что получаю правильное имя хоста. Но если я использую -m или же -r вариант тогда получаю.

      # nsenter -t 1212 -i -p -n -u -m -r
nsenter: failed to execute /bin/sh: No such file or directory

Теперь, если я запустил процесс стресса на нем:

      # nsenter -t 1212 -i -p -n -u
# stress-ng -c 2
stress-ng: info:  [50] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [50] dispatching hogs: 2 cpu

Он не дает всплеска процессора для целевого контейнера, имеющего идентификатор контейнера 1212, вместо этого он загружает тот же хост.

Итак, есть ли способ запустить такой процесс, как stress или же dd в целевом контейнере без запуска execкоманда? Я тоже пытался проверить cgexec и cgroups за это.

0 ответов

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