【发布时间】:2015-01-14 22:20:05
【问题描述】:
我想在派生自 Debian 官方 Docker hub 存储库的 docker 容器中执行 ps 命令:
$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found
【问题讨论】:
我想在派生自 Debian 官方 Docker hub 存储库的 docker 容器中执行 ps 命令:
$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found
【问题讨论】:
如果您无法安装 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
已编辑 - cmdline 中的空格丢失,因此我们可以将 cat 输出通过管道传递给 tr 命令,例如:
$ cat /proc/1/cmdline | tr '\0' ' '
/sbin/init splash
【讨论】:
如果您运行的是 CentOS 容器,则可以使用以下命令安装 ps:
yum install -y procps
在 Dockerfile 上运行此命令:
RUN yum install -y procps
【讨论】:
ps 未安装在基础wheezy 映像中。在容器中试试这个:
RUN apt-get update && apt-get install -y procps
【讨论】:
apt-get install -y procps。
ps 的 URL:https://github.com/moby/moby/issues/447#issuecomment-36647268
RUN apt-get update && apt-get install -y procps 只会导致错误。原来的帖子,也是被接受的答案,很好。
首先,运行以下命令:
apt-get update && apt-get install procps
然后运行:
ps -ef
【讨论】:
使用 docker 顶部
docker top <container ID>
【讨论】: