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

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

الجزء 1: الأساسيات
الجزء 2: المصطلحات والمفاهيم
الجزء 3: ملفات Dockerfile
الجزء 4: تقليل حجم الصور وتسريع تجميعها
الجزء 5: الفرق
الجزء 6: العمل مع البيانات



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

يمكن تخزين بيانات عامل الميناء إما بشكل مؤقت أو دائم. لنبدأ ببيانات الوقت.

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


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

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

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

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

تخزين البيانات الدائم


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


جبل tmpfs وربط جبل

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

توم دوكر


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

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

كما ترون ، تحتوي وحدات التخزين Docker على ميزات رائعة. دعونا نتحدث عن كيفية إنشائها.

خلق حجم


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

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

VOLUME /my_volume 

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

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

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

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


reat إنشاء وحدة تخزين


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

 docker volume create —-name my_volume 

volumeFolding حجم المعلومات


لعرض قائمة وحدات تخزين Docker ، استخدم الأمر التالي:

 docker volume ls 

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

 docker volume inspect my_volume 

em إزالة حجم


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

 docker volume rm my_volume 

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

 docker volume prune 

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

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

 docker system prune 

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

أعلام - تحميل و - مجلد


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

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

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

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

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

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

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

  • type - type جبل. يمكن أن تكون قيمة المفتاح المقابل مرتبطة أو وحدة تخزين أو ملفات tmpfs . نحن نتحدث عن مجلدات هنا ، أي - نحن مهتمون بقيمة volume .
  • source - 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 التي تنصحين للمبتدئين للدراسة؟

Source: https://habr.com/ru/post/ar441574/


All Articles