Động lực: Để chạy một kiểm tra sức khoẻ cơ bản về một container Docker bằng cách đếm rằng một số lượng nhất định các thông điệp chảy qua stdout trong một thời gian nhất định chân trờiCó thể đọc tin nhắn được truyền qua thiết bị xuất chuẩn từ trong vùng chứa Docker không? (Không có 'Docker logs`)
mục tiêu trước mắt: Từ bên trong một trình bao bắt đầu bằng docker exec
, đọc dữ liệu đang được truyền tới đường ra khỏi quá trình chính (PID 1)
Tôi thậm chí không chắc chắn nếu những gì tôi muốn là có thể. Nếu đúng như vậy, giải thích tại sao không được đánh giá cao lắm - và sẽ giúp nâng cao kiến thức của tôi.
bước để tái sản xuất:
Bắt đầu container -
container1
docker run -it --name container1 ubuntu bash -c -i "COUNT=0; while true; do echo Keep the dance floor beat going; ((COUNT++)); sleep 1; echo \"Count is: \${COUNT}\"; done;"
Trong một cửa sổ terminal,
docker exec
để bắt đầu quá trình khác trong cùng một thùng chứadocker exec -it container1 bash
Tôi có thể bằng cách nào đó không?/print
/read
các thư được truyền qua stdout bởi PID 1?
Tôi hiểu rằng có các công việc xung quanh - ví dụ: đường ống qua tee
hoặc viết khác vào đĩa - nhưng hy vọng sẽ có một viên đạn ma thuật.
Có lẽ điều này? http://stackoverflow.com/a/17790708/2079781 – Rickkwa
Cảm ơn bạn đã gợi ý, nhưng tôi không thể có được giải pháp đó để làm việc với bản sao tôi đã cung cấp ở trên. – JacobWuzHere
Tôi không tìm thấy giải pháp nhanh, nhưng bạn có thể xem https: // github.com/gliderlabs/logspout lấy đầu ra bản ghi của một vùng chứa "bằng cách nào đó" và thường dẫn nó tới một bộ thu từ xa. (chỉnh sửa: hmm, tôi nghĩ rằng điều này cũng hoạt động thông qua Docker-host, vì vậy nó có thể không phải là những gì bạn đang tìm kiếm) – schmunk