نحن ندير موقع Discourse مستضاف ذاتيًا على DigitalOcean ولدينا قرص بسعة 25 جيجابايت. لقد حاولت للتو تحديث صورة Discourse الخاصة بنا وحصلت على رسالة تفيد بأنك بحاجة إلى مساحة أكبر للمتابعة. بعد تنظيف صورة Docker والحاويات، ما زلنا بحاجة إلى 0.4 جيجابايت.
أي نصائح حول كيفية توفير المساحة؟ سواء لتحديث الآن أو لتوفير المساحة في المستقبل. أعلم أننا سنحتاج إلى تغيير الحجم قريبًا، ولكن سيكون من المفيد تجاوز تحديث واحد آخر لصورة Discourse على الأقل.
هل تخزن النسخ الاحتياطية محليًا؟
إذا كان الأمر كذلك، فربما يساعد التخلص من بعض النسخ القديمة. 0.4 جيجابايت (أي 400 ميجابايت) يجب أن تكون قابلة للإدارة.
يمكنك أيضًا محاولة تنظيف بعض المساحة على النظام المضيف أيضًا.
من المهم فهم سبب ظهور الصور الوسيطة غير المسماة على أنها <none> <none> لتجنبها، لأنه كما رأيت، لا يمكنك إزالتها إذا كانت قيد الاستخدام.
السبب في ظهور الصور غير المسماة هو أنك قمت ببناء صورة، ثم قمت بتغيير Dockerfile وقمت ببناء تلك الصورة مرة أخرى، وأعادت استخدام بعض الطبقات من البناء السابق. الآن لديك صورة غير مسماة لا يمكن حذفها لأن بعض طبقاتها قيد الاستخدام من قبل إصدار جديد من تلك الصورة.
الحل هو:
حذف الإصدار الجديد من الصورة
حذف الصورة غير المسماة و
إعادة بناء الإصدار الجديد من الصورة بحيث تمتلك جميع الطبقات.
سيتبقى لديك صورة مسماة واحدة تحتوي على جميع طبقات الصور غير المسماة السابقة والصورة الجديدة.
[اقتباس=“Michael Brown, post:7, topic:252779, username:supermathie”]
في هذه المرحلة، سأوفر على نفسي المتاعب وأقوم بتغيير الحجم الآن.
[/اقتباس]
لم أكن أتوقع أن أجد 2.64 جيجابايت في صورة
docker image، لذلك أحاول الآن معرفة ما يحدث هناك. إذا لم أكن بحاجة إلى هذه الصورة على الإطلاق، فنحن بالتأكيد بعيدون عن الحاجة إلى تغيير الحجم.
كم من الوقت؟ لا أرى أي تلميح لذلك - أعرف أنني أقوم بتشغيل منتدى واحد بسعة 20 جيجابايت ومنتدى آخر بسعة 25 جيجابايت بسعادة.
تحت المشاركة قد يكون لديك الكثير من بيانات النسخ الاحتياطي (ربما في shared/standalone/backups/default). قد يكون لديك أيضًا نسخ قديمة من قاعدة البيانات، أو ملفات سجل قديمة. أوصي بتشغيل du -kx / | sort -n | tail -49
أو ما شابه.
من العدل ملاحظة أنه يمكنك توفير الوقت، على حساب المال، بالانتقال إلى مثيل أكبر. أو يمكنك إجراء المقايضة المعاكسة.
هذا يقلقني قليلاً. قد تساعدك DO في عمل نسخ احتياطية لنظامك بأكمله، ولكن لو كنت مكانك، لكان سيسعدني معرفة كيفية عمل نسخ احتياطية لـ Discourse وكيفية الحصول على نسخة محلية آمنة. وكيفية تقليم النسخ الاحتياطية. (إذا قام DO بحذف مثيلك وحسابك لسوء حظ ما، فستحتاج إلى أن تنجو بياناتك من ذلك.)
نستخدم وظيفة النسخ الاحتياطي لـ Discourse أيضًا، وأدركت أننا لم نمسح النسخ الاحتياطية القديمة هناك.
حسنًا، لقد حذفت كل النسخ الاحتياطية باستثناء الأحدث باستخدام واجهة Discourse وقمت أيضًا بتنزيل أحدث نسخة احتياطية إلى محرك الأقراص المحلي الخاص بي. هذا يجعلني أقل من 100 ميجابايت بعيدًا عن الحصول على مساحة كافية.
إليك ما أحصل عليه عند تشغيل هذا الأمر في var/discourse
حيث {image_name} هو اسم الصورة التي تريد حذفها. يمكنك أيضًا استخدام معرف الصورة لحذف الصورة (على سبيل المثال، docker rmi {image_id}). هذا ما ستحتاج إلى استخدامه لحذف صورة باسم <none>.
على سبيل المثال، لنفترض أن لديك الصور التالية:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-new-image latest c18f86ab8daa 12 seconds ago 393MB
<none> <none> b1ee72ab84ae About a minute ago 393MB
my-image latest f5a5f24881c3 2 minutes ago 393MB
من الممكن أن الصورة <none> لا يمكن حذفها لأن my-new-image تستخدم بعض الطبقات منها. ما تحتاج إلى القيام به هو:
ما يفعله هذا هو إزالة my-new-image:latest التي تعيد استخدام طبقات من صورة <none>. ثم يحذف صورة <none> باستخدام معرف الصورة الخاص بها b1ee72ab84ae. أخيرًا، يعيد بناء my-new-image مما يؤدي إلى إنشاء جميع الطبقات المطلوبة.
تحقق أيضًا للتأكد من عدم وجود حاويات متوقفة لا تزال تستخدم صورة <none> “غير الموسومة”. استخدم docker ps -a لرؤية جميع الصور بما في ذلك تلك التي تم إنهاؤها. إذا كان الأمر كذلك، استخدم docker rm {container_id} لإزالة الحاوية ثم حاول إزالة صورة <none> مرة أخرى.
ما زلت أرغب في تتبع المشكلة المتعلقة بصورة <none> (نظرًا لأنه من السخيف أن تشغل مساحة تزيد عن 2 جيجابايت)، لكنك قمت بحل مشكلتي الأكثر إلحاحًا المتمثلة في إنشاء مساحة كافية للترقية! شكرًا لك!!