0

细节

我想在容器上运行一个进程而不实际执行它。这是因为容器可能没有安装所有的包来运行命令。就像如果我想运行一个stress命令,那么我可能在容器中找不到压力并且必须单独安装它。

我检查了几种可能性,我发现一种方法是使用nsenter.

问题

我有一个 Nginx 容器,我想在其上运行压力过程而不实际执行它。

  • 我获取了pid容器(1212)并尝试运行以下命令:
# nsenter -t 1212 -i -p -n -u
# hostname
nginx-86c57db685-q47lq

我检查了我得到了正确的主机名。但是,如果我使用-mor-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

它不会给容器 ID 为 1212 的目标容器提供 CPU 峰值,而是占用同一主机。

那么,有没有办法在不运行命令的情况下运行类似目标容器stress或在目标容器上运行的进程?我也试图检查并为此。ddexeccgexeccgroups

4

0 回答 0