【问题标题】:ps command doesn't work in docker containerps 命令在 docker 容器中不起作用
【发布时间】: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


    【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-16
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        相关资源
        最近更新 更多