ps命令在docker容器中不起作用

Yve*_*las 154 debian docker

我想在Debian官方Docker hub存储库派生的docker容器中执行ps命令:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found
Run Code Online (Sandbox Code Playgroud)

use*_*103 274

ps未安装在基本wheezy图像中.从容器中试试:

apt-get update && apt-get install procps
Run Code Online (Sandbox Code Playgroud)

  • 如果你收到这个错误"命令'/ bin/sh -c apt-get install procps'返回一个非零代码:1"然后使用`apt-get install -y procps`代替. (5认同)
  • 显然我的编辑已被拒绝。我不知道为什么,但是在正在运行的容器中运行“RUN apt-get update && apt-get install -y procps”只会导致错误。原来的帖子,也是被接受的答案,本来就很好。 (3认同)
  • 加procps也可以获得'kill'命令 (2认同)
  • 这是 2014 年讨论的在 wheezy 图像中不包含 `ps` 的 URL:`https://github.com/moby/moby/issues/447#issuecomment-36647268` (2认同)
  • 从命令中删除 RUN,我认为这是一个拼写错误。 (2认同)

es *_*gne 62

使用码头工人

docker top <container ID>
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!无需在容器上安装 `procps`。谢谢。 (8认同)

小智 42

如果您无法安装 procps 包(没有适当的权限),您可以使用 /proc 目录。

前几个目录(以数字命名)是进程的 PID。在目录中,您可以找到有助于破译哪个进程连接到每个 PID 的附加信息。例如,您可以使用 cat 命令查看“cmdline”文件来检查哪个进程连接到 PID。

$ ls /proc
1 10 11 ...

$ ls -1 /proc/22
attr
autogroup
auxv
cgroup
clear_refs
cmdline
...

$ cat /proc/22/cmdline 
/bin/sh
Run Code Online (Sandbox Code Playgroud)

  • 虽然不太方便,但这似乎是更合适的答案。 (6认同)
  • 要查看空格,我必须运行“cat /proc/22/cmdline | xargs -0” (3认同)

Duf*_*her 9

如果您正在运行 CentOS 容器,则可以使用以下命令安装 ps:

yum install -y procps
Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 上运行此命令:

RUN yum install -y procps
Run Code Online (Sandbox Code Playgroud)


sto*_*nth 7

Kali 用户修复 bash: ps: 命令未找到的问题是:

apt install procps
Run Code Online (Sandbox Code Playgroud)


小智 6

首先,运行以下命令:

apt-get update && apt-get install procps
Run Code Online (Sandbox Code Playgroud)

然后运行:

ps -ef
Run Code Online (Sandbox Code Playgroud)