ps 命令在 docker 容器中不起作用
Posted
技术标签:
【中文标题】ps 命令在 docker 容器中不起作用【英文标题】:ps command doesn't work in docker container 【发布时间】: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
【问题讨论】:
【参考方案1】:如果您无法安装 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
【讨论】:
虽然不太方便,但这似乎是更合适的答案。 要查看我必须运行的空格“cat /proc/22/cmdline | xargs -0”【参考方案2】:如果您运行的是 CentOS 容器,则可以使用以下命令安装 ps:
yum install -y procps
在 Dockerfile 上运行此命令:
RUN yum install -y procps
【讨论】:
【参考方案3】:ps
未安装在基础wheezy
映像中。在容器中试试这个:
RUN apt-get update && apt-get install -y procps
【讨论】:
如果您收到此错误“命令 '/bin/sh -c apt-get install procps' 返回非零代码:1”,请改用apt-get install -y procps
。
这是 2014 年讨论的不包括 ps
的 URL:https://github.com/moby/moby/issues/447#issuecomment-36647268
运行 apt-get update && apt-get install -y procps && rm -rf /var/lib/apt/lists/*
从你的命令中删除 RUN,我认为这是一个错字。
我的编辑显然被拒绝了。我不知道为什么,但是在一个正在运行的容器中运行RUN apt-get update && apt-get install -y procps
只会导致错误。原来的帖子,也是被接受的答案,很好。【参考方案4】:
首先,运行以下命令:
apt-get update && apt-get install procps
然后运行:
ps -ef
【讨论】:
为我工作得很好。谢谢@harun【参考方案5】:使用 docker 顶部
docker top <container ID>
【讨论】:
以上是关于ps 命令在 docker 容器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS 在带有 Docker 容器的 Service Fabric 中不起作用
Docker 容器在使用 AWS ECR 的 AWS ECS 中不起作用