Learning Docker ، الجزء 6: العمل مع البيانات

في الجزء الحالي من ترجمة سلسلة من المواد حول Docker ، سنتحدث عن العمل مع البيانات. على وجه الخصوص ، حول مجلدات Docker. في هذه المواد ، قمنا باستمرار بمقارنة آليات برمجة Docker بمختلف التشبيهات الصالحة للأكل. لن نحيد عن هذا التقليد هنا. اجعل البيانات في Docker عبارة عن توابل. هناك العديد من التوابل في العالم ، ولدى Docker العديد من الطرق للتعامل مع البيانات.

الجزء الأول: الأساسيات
الجزء الثاني: المصطلحات والمفاهيم
الجزء 3: Dockerfiles
الجزء الرابع: تصغير حجم الصور وتسريع تجميعها
الجزء الخامس: الأوامر
الجزء 6: العمل مع البيانات

Learning Docker ، الجزء 6: العمل مع البيانات

يرجى ملاحظة أنه تم تحضير هذه المواد باستخدام إصدار محرك Docker 18.09.1 ​​وإصدار API 1.39.

يمكن تخزين البيانات في Docker إما بشكل مؤقت أو دائم. لنبدأ بالبيانات المؤقتة.

تخزين مؤقت للبيانات

هناك طريقتان لإدارة البيانات المؤقتة في حاويات Docker.

بشكل افتراضي ، يتم تخزين الملفات التي تم إنشاؤها بواسطة تطبيق قيد التشغيل في حاوية في طبقة حاوية قابلة للكتابة. لكي تعمل هذه الآلية ، لا يوجد شيء يحتاج إلى تكوين. اتضح أنها رخيصة ومبهجة. يحتاج التطبيق ببساطة إلى حفظ البيانات والاستمرار في القيام بما يخصه. ومع ذلك ، بعد انتهاء وجود الحاوية ، ستختفي أيضًا البيانات المحفوظة بهذه الطريقة البسيطة.

يعد تخزين الملفات المؤقت في Docker حلاً آخر مناسبًا للحالات التي تحتاج فيها إلى مستوى أداء أعلى مما يمكن تحقيقه باستخدام آلية تخزين البيانات المؤقتة القياسية. إذا لم تكن بحاجة إلى تخزين بياناتك لفترة أطول من وجود الحاوية ، فيمكنك الاتصال بالحاوية tmpfs - وهو مخزن معلومات مؤقت يستخدم ذاكرة الوصول العشوائي للمضيف. سيؤدي ذلك إلى تسريع تنفيذ عمليات كتابة البيانات وقراءتها.

غالبًا ما يحدث أن البيانات بحاجة إلى التخزين حتى بعد انتهاء وجود الحاوية. للقيام بذلك ، نحتاج إلى آليات تخزين بيانات ثابتة.

تخزين البيانات المستمر

هناك طريقتان لجعل عمر البيانات أطول من عمر الحاوية. إحدى الطرق هي استخدام تقنية ربط الربط. باستخدام هذا الأسلوب ، يمكنك تثبيت مجلد حقيقي على الحاوية ، على سبيل المثال. ستتمكن العمليات خارج Docker أيضًا من العمل مع البيانات المخزنة في مثل هذا المجلد. هكذا ينظر tmpfs جبل وربط التكنولوجيا.

Learning Docker ، الجزء 6: العمل مع البيانات
تصاعد tmpfs وربط جبل

تتمثل عيوب استخدام تقنية bind mount في أن استخدامها يعقد النسخ الاحتياطي للبيانات ، وترحيل البيانات ، ومشاركة البيانات بين عدة حاويات. من الأفضل استخدام وحدات تخزين Docker لتخزين البيانات بشكل دائم.

مجلدات عامل ميناء

وحدة التخزين هي نظام ملفات موجود على الجهاز المضيف خارج الحاويات. يتم إنشاء وحدات التخزين وإدارتها بواسطة Docker. فيما يلي الخصائص الرئيسية لوحدات تخزين Docker:

  • إنها وسيلة للتخزين الدائم للمعلومات.
  • هم مستقلون ومنفصلون عن الحاويات.
  • يمكن مشاركتها بين حاويات مختلفة.
  • إنها تسمح لك بتنظيم القراءة والكتابة الفعالة للبيانات.
  • يمكن وضع وحدات التخزين على موارد موفر السحابة عن بُعد.
  • يمكن تشفيرها.
  • يمكن إعطاؤهم أسماء.
  • يمكن للحاوية ترتيب السكان المسبق للحجم بالبيانات.
  • إنها مريحة للاختبار.

كما ترى ، فإن أحجام Docker لها خصائص مذهلة. دعنا نتحدث عن كيفية إنشائها.

إنشاء مجلدات

يمكن إنشاء وحدات التخزين باستخدام طلبات Docker أو API.

فيما يلي تعليمات في Dockerfile تتيح لك إنشاء وحدة تخزين عند بدء تشغيل حاوية.

VOLUME /my_volume

عند استخدام تعليمات مماثلة ، سيقوم Docker ، بعد إنشاء الحاوية ، بإنشاء مجلد يحتوي على البيانات الموجودة بالفعل في الموقع المحدد. لاحظ أنه إذا قمت بإنشاء وحدة تخزين باستخدام Dockerfile ، فإن هذا لا يعفيك من الحاجة إلى تحديد نقطة تحميل وحدة التخزين.

يمكنك أيضًا إنشاء مجلدات في Dockerfile باستخدام تنسيق JSON.

بالإضافة إلى ذلك ، يمكن إنشاء وحدات التخزين باستخدام أدوات سطر الأوامر أثناء تشغيل الحاوية.

العمل مع وحدات التخزين من سطر الأوامر

▍ حجم إنشاء

يمكنك إنشاء وحدة تخزين مستقلة باستخدام الأمر التالي:

docker volume create —-name my_volume

▍ تعرف على معلومات حول الأحجام

لعرض قائمة بأحجام Docker ، استخدم الأمر التالي:

docker volume ls

يمكنك استكشاف حجم معين مثل هذا:

docker volume inspect my_volume

▍ حذف وحدة تخزين

يمكنك حذف وحدة تخزين مثل هذا:

docker volume rm my_volume

لإزالة جميع وحدات التخزين التي لا تستخدمها الحاويات ، يمكنك اللجوء إلى الأمر التالي:

docker volume prune

قبل حذف وحدات التخزين ، سيطلب منك Docker تأكيد هذه العملية.

إذا تم إقران وحدة تخزين بحاوية ، فلا يمكن حذف هذا المجلد حتى يتم حذف الحاوية المقابلة. في الوقت نفسه ، حتى إذا تمت إزالة الحاوية ، فإن Docker لا يفهم هذا دائمًا. إذا حدث هذا ، يمكنك استخدام الأمر التالي:

docker system prune

إنه مصمم لتنظيف موارد Docker. بعد تنفيذ هذا الأمر ، يجب أن تكون قادرًا على حذف وحدات التخزين التي كانت حالتها غير صحيحة من قبل.

- أعلام الجبل والحجم

للعمل مع وحدات التخزين ، عند استدعاء الأمر docker، ستحتاج غالبًا إلى استخدام الأعلام. على سبيل المثال ، لإنشاء مجلد أثناء إنشاء الحاوية ، يمكنك استخدام هذا البناء:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

في العصور القديمة (حتى عام 2017) ، كان العلم شائعًا --volume. في البداية ، هذه العلامة (يمكن استخدامها أيضًا في شكل مختصر ، ثم يبدو -v) للحاويات المستقلة والعلم --mount - في بيئة Docker Swarm. ومع ذلك ، اعتبارًا من Docker 17.06 ، العلم --mount يمكن استخدامها في أي سيناريو.

وتجدر الإشارة إلى أنه عند استخدام العلم --mount تزداد كمية البيانات الإضافية التي يجب تحديدها في الأمر ، ولكن لعدة أسباب ، من الأفضل استخدام هذه العلامة المعينة ، وليس --volume. علَم --mount هي الآلية الوحيدة التي تسمح لك بالعمل مع الخدمات أو تحديد خيارات مشغل الصوت. أيضًا ، هذا العلم أسهل في العمل معه.

في الأمثلة الحالية لأوامر معالجة بيانات Docker ، يمكنك رؤية العديد من الأمثلة على استخدام العلم -v. عند محاولة تكييف هذه الأوامر لنفسك ، ضع في اعتبارك أن الأعلام --mount и --volume استخدام تنسيقات مختلفة للمعلمات. وهذا يعني أنه لا يمكنك استبداله ببساطة -v في --mount واحصل على فريق عمل.

الفرق الرئيسي بين --mount и --volume هو ذلك عند استخدام العلم --volume يتم جمع جميع المعلمات معًا في حقل واحد ، وعند استخدام --mount يتم فصل المعلمات.

عند العمل مع --mount يتم تمثيل المعلمات كأزواج مفتاح-قيمة ، أي أنها تبدو key=value. هذه الأزواج مفصولة بفواصل. فيما يلي الخيارات الشائعة الاستخدام --mount:

  • type - نوع جبل. يمكن أن تكون قيمة المفتاح المقابل ربط, حجم أو tmpfs. نحن نتحدث عن الأحجام هنا ، أي أننا مهتمون بالقيمة volume.
  • source - مصدر جبل. بالنسبة لوحدات التخزين المسماة ، هذا هو اسم المجلد. بالنسبة لوحدات التخزين غير المسماة ، لم يتم تحديد هذا المفتاح. يمكن تقصيرها إلى src.
  • destination - المسار الذي تم تحميل الملف أو المجلد به في الحاوية. يمكن اختصار هذا المفتاح إلى dst أو target.
  • readonly - يتصاعد الحجم المقصود للقراءة فقط. يعد استخدام هذا المفتاح اختياريًا ، ولا يتم تعيين أي قيمة له.

هنا مثال على الاستخدام --mount مع العديد من الخيارات:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

نتائج

فيما يلي بعض الأوامر المفيدة التي يمكنك استخدامها عند العمل مع وحدات تخزين Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

فيما يلي قائمة بالخيارات الشائعة الاستخدام لـ --mount، قابلة للتطبيق بأمر النموذج docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

الآن بعد أن أكملنا سلسلة Docker هذه ، حان الوقت لقول بضع كلمات حول المكان الذي يمكن لمتعلمي Docker الانتقال إليه بعد ذلك. ها هو مقال رائع رائع عن Docker. ها هو كتاب عن Docker (عند شراء هذا الكتاب ، حاول الحصول على أحدث إصدار منه). ها هو كتاب آخر لمن يعتقد أن الممارسة هي أفضل طريقة لتعلم التكنولوجيا.

القراء الأعزاء! ما هي مواد Docker التي توصي بتعلمها للمبتدئين؟

Learning Docker ، الجزء 6: العمل مع البيانات

المصدر: www.habr.com

إضافة تعليق