Lệnh ps không hoạt động trong docker container


208

Tôi muốn thực hiện một lệnh ps trong bộ chứa docker có nguồn gốc từ kho lưu trữ trung tâm Docker chính thức của Debian:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found

Câu trả lời:


366

pskhông được cài đặt trong wheezyhình ảnh cơ sở . Hãy thử điều này từ trong container:

RUN apt-get update && apt-get install -y procps

8
Nếu bạn gặp lỗi này "Lệnh '/ bin / sh -c apt-get install Procps' đã trả về mã khác không: 1", sau đó sử dụng apt-get install -y procpsthay thế.
fwc

Đây là URL được thảo luận trong năm 2014 không bao gồm pstrong hình ảnh khò khè:https://github.com/moby/moby/issues/447#issuecomment-36647268
Truthadjustr

CHẠY apt-get update && apt-get install -y Procps && rm -rf / var / lib / apt / list / *
Zhuo YING

Nó nên được thêm vào đâu? Tôi nghĩ trong tập tin .yml khi tạo hình ảnh docker của bạn?
Yaro


6

Trong trường hợp bạn không thể cài đặt gói Procps (không có quyền thích hợp), bạn có thể sử dụng thư mục / Proc.

Một vài thư mục đầu tiên (được đặt tên là số) là các PID của các quy trình của bạn. Trong các thư mục, bạn có thể tìm thấy thông tin bổ sung hữu ích để giải mã quá trình nào được kết nối với mỗi PID. Ví dụ: bạn có thể sử dụng lệnh cat để xem tệp "cmdline" để kiểm tra quá trình nào được kết nối với PID.

$ ls /proc
1 10 11 ...

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

$ cat /proc/22/cmdline 
/bin/sh

Trong khi không thuận tiện, đây có vẻ là câu trả lời thích hợp hơn.
Jairus Martin

1

Đầu tiên, chạy lệnh dưới đây:

apt-get update && apt-get install procps

và sau đó chạy:

ps -ef
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.