Lấy pid của ứng dụng chạy trên Docker

Hi all, mình có câu hỏi hơi thiên về hệ thống một chút.
Như bình thường thì mọi ứng dụng chạy trên server đều sẽ có một file pid. Nhưng hiện tại mình đang có ứng dụng chạy trên Docker và vẫn chưa có giải pháp để lấy được file pid. Có ai đã từng làm qua hoặc có giải pháp nào thì cho mình xin ý kiến. Mình cảm ơn!
#edit: mục đích của mình là giám sát (xem trạng thái sống chết, bật, tắt, restart) nhiều ứng dụng trên nhiều server khác nhau thông qua một hệ thống tập trung, quản lý qua giao diện web, và cần giám sát được thì mình cần file pid này!

bạn nên nói mục đích của bạn khi muốn làm việc này là gì để mọi người thảo luận giải pháp
còn bình thường thì chẳng ai làm cái chuyện đó cả

mình đang có một hệ thống giám sát các phần mềm, phần cứng trên server, giám sát bằng pid (để xem nó sống chết ra sao). Tuy nhiên mỗi module lại do một người đảm nhiệm, có một vài module thì sử dụng docker nên không có file pid

có biết nó chạy trên port nào không biết, và HDH là gì, nếu là linux:

netstat -plnt | grep "8081"
tcp6       0      0 :::8081                 :::*                    LISTEN      3454975/java

cái cuối là pid

1 Like

cảm ơn bạn, tuy nhiên cái mình cần là file pid (ví dụ mysql.pid) và mình cấu hình theo path đến file pid này, vì số pid này không thể fix cứng được, có trường hợp kill đi rồi start lại thì sẽ thay đổi pid!

Nghĩa là cái bạn cần là file pid để tiện cho hệ thống stop cái ứng dụng lại đúng không?

1 Like

mình cần lấy để theo dõi nó, cũng có thể là bật, tắt, restart nó (thông qua giao diện web), gần như là remote vậy

Này nhiều khi cần phải code để lấy cái pid đó ra trước, cơ mà nếu dùng docker thì nên dùng bộ tool của nó để làm viết này(docker command). đỡ nguy hiểm.
Hoặc thử start docker với lệnh này:

[comand] & echo  "$!" > pid/abc.pid

để lưu pid lại

3 Likes

Hm, nếu vậy cậu không cần pid đâu.
Khi ứng dụng chạy trên docker container, việc biết pid của docker không có tác dụng gì (trừ khi cậu muốn monitor docker daemon bị crash hay không).

Mặt khác, biết pid của app trong container cũng không có tác dụng, vì:

  • Cậu phải vào trong container để lấy pid, và restart trong container.
  • Nếu app trong container bị crash, container sẽ bị tắt luôn => không có cơ hội để cậu restart app trong container.

Thường thì nếu app trong container bị crash, cậu chỉ cần tạo container mới là xong, và việc bật tắt này thường do cloud đảm nhiệm rồi mà :sweat_smile: (trừ khi app của cậu không được deploy trên cloud, nếu vậy tớ cần cậu mô tả thêm tí, như app đó là app gì).

5 Likes

mấy cái này thì quản lí bằng docker cli là được rồi
khi tạo container thì gán cho nó cái name và quản lý nó bằng docker cli là xong, cli của docker có đủ mấy cái operation đó mà

ở mức của os bạn chỉ tác động đến docker container bằng docker cli mà thôi
mình chưa thấy ai có ý tưởng giống như bạn cả, nhưng bạn cứ try hard đi, cũng không có mất mát gì

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?