في الإصدار الحالي من سلسلة 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 التي تنصحين للمبتدئين للدراسة؟
