डॉकटर कंटेनर में कोर फ़ाइल डंप को अक्षम कैसे करें


13

मेरा PHP कंटेनर पीडीएफ उत्पन्न करने के लिए कठपुतली चलाता है। पीडीएफ डॉक्यूमेंट जेनरेट करके, यह मेरे कंटेनर के अंदर दो कोर डंप फाइल बनाता है। मुझे यकीन नहीं है कि वे वास्तव में कहाँ से आते हैं।

होस्ट / सर्वर CentOS 7 है।

मैंने निम्नलिखित जाँच की है:

  1. कोई एप्लिकेशन त्रुटि लॉग नहीं, ब्राउजरशॉट / कठपुतली त्रुटियों के बिना चल रहा है।
  2. कोई त्रुटि लॉग (जैसे segfault) में नहीं मिला /var/log/messages

मैंने कोर डंप को निष्क्रिय करने की कोशिश की है

Https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/ के डिसएबल कोर डंप सेक्शन का अनुसरण करके , मैंने किया है:

  1. निम्नलिखित सामग्री जोड़ रहा है /etc/security/limits.conf
* soft core 0
* hard core 0
  1. द्वारा एक अक्षम-core- dumps.sh बनाया गया: echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh

  2. में निम्नलिखित सामग्री जोड़ी गई /etc/systemd/coredump.conf

[Coredump]

Storage=none
ProcessSizeMax=0
  1. और सर्वर और कंटेनर को रिबूट करें

  2. मैंने ulimit -c 0कंटेनर (आलपिन) के अंदर स्थापित करने की भी कोशिश की है

ऊपर से कोई भी ट्रिक मेरे लिए काम की नहीं है। कठपुतली हर बार एक पीडीएफ उत्पन्न करता है जो हमेशा नीचे की तरह दो कोर डंप फाइलें बनाता है:

core.131 core.52

मूल फाइलें इस तरह दिखती हैं:

कोर डंप फ़ाइल सामग्री

क्या कोई मुझे कोर डंप को निष्क्रिय करने में मदद कर सकता है? बहुत बहुत धन्यवाद।


मुझे लगता है कि आपको अपने होस्ट पर कोर डंप को निष्क्रिय करने की आवश्यकता है कंटेनर नहीं या अपना कंटेनर चलाएं क्योंकि प्रचलित एक
लिनपी

@LinPy मैं पहले से ही पालन करते हुए मेजबान पर कोर डंप अक्षम कर दिया है linux-audit.com/... । मेजबान और कंटेनर दोनों पर कोर डंप अक्षम करने की कोशिश की। उनमें से कोई भी काम नहीं करता है।
जोनाथन

यदि आप उन्हें अक्षम करने के बजाय इन coredumps का मूल कारण खोजना चाहते हैं, तो मेरा सुझाव है कि आप कठपुतली में अधिक देखें। चूंकि कठपुतली नोड्ज का उपयोग करता है और कोरडंप में नोड्ज मॉड्यूल / लीब होता है, ऐसा लगता है कि एक नोडज प्रक्रिया की तरह जिसमें गलती थी। कुछ डिबगिंग विकल्प हैं जिनका उपयोग किया जा सकता है जैसे कि हेडलाइट मोड को अक्षम करने से कठपुतली लॉगिंग को सक्षम किया जा सकता है। अधिक जानकारी के लिए यहां एक लिंक दिया गया है: github.com/puppeteer/puppeteer#debugging-tips
अहसबीनी

Docker फ़ाइल में उदाहरण के लिए /etc/security/limits.conf/etc/systemd/coredump.conf insitde कंटेनर को संपादित करने का प्रयास करें जो चित्र बनाने का वर्णन करता है
Ryabchenko अलेक्जेंडर

@ अहासिनी अजीब बात है पीडीएफ पूरी तरह से उत्पन्न होती है। मैंने डीबग सक्षम किया, लेकिन कुछ भी उपयोगी नहीं पाया। बस कोर डंप है।
जोनाथन

जवाबों:


3

आपको --ulimit core=0coredumps को निष्क्रिय करने के विकल्प के साथ अपना कंटेनर शुरू करना होगा ।

संदर्भ: https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit

उदाहरण

मेजबान पर, /tmpसत्यापन के लिए अस्थायी रूप से coredump पथ सेट करें :

echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

हमेशा की तरह एक कंटेनर शुरू करें और एक कोर डंप मजबूर करें:

docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)

अब, साथ --ulimit core=0:

docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)

जवाब के लिए धन्यवाद। मैं कंपोज़ का उपयोग कर रहा हूं और 0. को सॉफ्ट और हार्ड सेट करके अलिमेट कॉन्फिगर की कोशिश की है। लेकिन फिर भी काम नहीं कर रहा है। क्या डॉक रन-यूलीमिट कोर = 0 है जो कंपोज के अलिमेट को 0 पर सेट करने के समान है?
जोनाथन

मेरा मानना ​​है कि इसे entrypoint.shउसी कमांड में जोड़ा जाना चाहिए , जो php एप्लिकेशन को शुरू करता है
आभासिनी

2

मुझे docker swarm सर्विस पर भी यह समस्या है और --ulimit core = 0 कमांड के नीचे उपयोग की जाने वाली swarm सर्विस में काम नहीं करता है और docker swarm सर्विस में मेरे लिए काम करता है!

sysctl -w kernel.core_pattern = / dev / null


धन्यवाद! यह चाल भी करता है।
जोनाथन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.