الرئيسية
» لينوكس
»
كيفية نقل الملفات من وإلى حاوية دوكر
كيفية نقل الملفات من وإلى حاوية دوكر
استخدم أمر Docker docker cpلنسخ الملفات أو المجلدات بين جهازك المحلي وحاوية. يعمل هذا الأمر في كلا الاتجاهين، وينسخ المجلدات بشكل متكرر، ويمكنه استهداف حاوية قيد التشغيل أو متوقفة. لا تحتاج إلى فتح نافذة طرفية داخل الحاوية أو إنشاء ملف مضغوط بصيغة tar للنسخ العادي.
الصيغة الأساسية هي docker cp SOURCE DESTINATION: ضع اسم الحاوية أو مُعرّفها قبل نقطتين رأسيتين لمسار الحاوية: docker cp LOCAL_PATH CONTAINER:CONTAINER_PATHالأمر `docker cp` ينسخ البيانات إلى داخل الحاوية، بينما docker cp CONTAINER:CONTAINER_PATH LOCAL_PATHالأمر `docker cp` ينسخ البيانات منها. يوثّق مرجع Docker الخاص بـ `docker cp` قواعد المسار والدليل.
1. ابحث عن اسم الحاوية أو معرّفها
قم بتشغيل هذا من طرفية حيث يمكن لأوامر Docker الوصول إلى محرك Docker:
docker ps -a
docker psيعرض هذا الأمر قائمة بالحاويات قيد التشغيل؛ -aكما يعرض الحاويات المتوقفة. استخدم القيمة الموجودة في NAMESالعمود أو مُعرّف الحاوية في الأوامر أدناه. webيسهل إعادة استخدام اسم مثل `container_container_ls`؛ بينما يُعدّ المُعرّف مُعرّفًا دقيقًا عند الحاجة إلى تمييز الحاويات. يمكنك التحقق من الحقول المعروضة باستخدام الأمر `docker ps` أو `docker container ls` .
استخدم اسم الحاوية أو المعرف الذي يظهر بواسطة docker ps -a.
2. انسخ ملفًا من جهاز الكمبيوتر الخاص بك إلى الحاوية
قم بتشغيل الأمر docker cpعلى الجهاز الذي تريد نسخ ملفاته. على سبيل المثال، من مجلد مشروع يحتوي على ملف report.csv، انسخه إلى /tmpداخل الحاوية المسماة web:
docker cp ./report.csv web:/tmp/report.csv
استبدل ./report.csvالمسار المحلي بمسار الملف، webواسم الحاوية أو معرّفها، /tmp/report.csvومسار الوجهة داخل الحاوية. تُفسَّر مسارات الحاويات من الدليل الجذر للحاوية، لذا فإن الشرطة المائلة في البداية اختيارية. إذا كان اسم الوجهة دليلاً موجوداً، فسيضع Docker الملف فيه باستخدام اسم ملف المصدر.
يقوم هذا الأمر بنسخ ملف مضيف واحد إلى الحاوية.
يقوم Docker بنسخ الدلائل بشكل متكرر. إذا كان /etc/app/الدليل موجودًا بالفعل، فسيضع هذا الأمر الدليل configبداخله:
docker cp ./config web:/etc/app/
لنسخ محتويات الملف فقط configإلى الملف /etc/app/، أضف /.في نهاية مسار المصدر:
اللاحقة /.تعني نسخ محتويات الدليل، بدلاً من تضمين دليل المصدر.
docker cp ./config/. web:/etc/app/
لا يقوم Docker بإنشاء المجلدات الأصلية المفقودة. أنشئ المجلد الأصلي للوجهة أولاً. لإنشاء مجلد مفقود داخل حاوية قيد التشغيل، شغّل الأمر docker exec web mkdir -p /etc/app، ثم انسخ الملفات. docker execيتطلب الأمر حاوية قيد التشغيل؛ docker cpبينما لا يتطلب الأمر ذلك.
3. انسخ ملفًا من الحاوية إلى جهاز الكمبيوتر الخاص بك
اعكس ترتيب المصدر والوجهة لاسترداد ملف. أنشئ مجلد الوجهة المحلي أولاً، ثم انسخ ملف السجل من الحاوية:
يجب أن يكون مجلد الوجهة المحلي موجودًا قبل النسخ إليه.
يمكنك استرداد مجلد بنفس الطريقة. أضف /.إلى مسار مصدر الحاوية لنسخ محتوياته مباشرةً إلى مجلد محلي موجود:
docker cp web:/var/log/app/. ./backup/
يمكن لـ Docker نسخ الملفات من حاوية متوقفة، وهو أمر مفيد لجمع السجلات أو التكوين بعد انتهاء العملية.
استخدام Docker Compose
إذا كان مشروعك يستخدم Compose، فاستخدم اسم الخدمة docker compose cpبدلاً من البحث عن مُعرّف الحاوية. على سبيل المثال، انسخ ملفًا محليًا إلى خدمة باسم web:
راجع مرجع docker compose cp الرسمي للاطلاع على خيارات مثل تحديد نسخة طبق الأصل عندما تحتوي الخدمة على حاويات متعددة.
الأذونات والتخزين الدائم
بشكل افتراضي، تكون الملفات المنسوخة إلى حاوية مملوكةً للمستخدم الجذر ومجموعته الأساسية؛ أما الملفات المنسوخة إلى جهازك فتكون مملوكةً للمستخدم الذي يُشغّل Docker. ويتم الحفاظ على الأذونات قدر الإمكان. استخدم هذا الخيار -aللحفاظ على مُعرّف المستخدم (UID) ومُعرّف المجموعة (GID) للمصدر. إذا تعذّر على أحد التطبيقات قراءة ملف، فتحقق من وجهته وملكيته بدلاً من منح الحاوية صلاحيات مميزة.
تُحذف الملفات الموجودة في طبقة الكتابة الخاصة بالحاوية مع الحاوية نفسها. بالنسبة للبيانات التي يجب أن تبقى، استخدم وحدة تخزين Docker أو ربطًا مباشرًا. تُناسب وحدات التخزين بيانات الحاويات الدائمة؛ بينما يسمح الربط المباشر للمضيف والحاوية بالوصول إلى الملفات نفسها. إذا قمت بنسخ البيانات إلى مسار مُغطى بربط مباشر، فإنك تُغير البيانات المربوطة. تحقق من الوجهة أولًا. راجع إرشادات Docker حول وحدات التخزين والربط المباشر .
استكشاف الأخطاء وإصلاحها بسرعة
"لا يوجد مثل هذا الحاوية": قم بتشغيل الأمر docker ps -aوتحقق من اسم الحاوية أو معرفها.
"لا يوجد ملف أو دليل بهذا الاسم": تحقق من مسار المصدر وتأكد من وجود الدليل الأصل للوجهة. تبدأ مسارات الحاويات من /.
تم وضع المجلد في مستوى أعمق مما كان متوقعًا: استخدم اللاحق /.لنسخ محتويات الدليل فقط.
تم رفض الإذن: تحقق من أن حسابك لديه صلاحية استخدام Docker وأن مستخدم التطبيق لديه صلاحية قراءة أو كتابة الوجهة. على نظام Linux، استخدم هذا الخيار sudoفقط إذا كانت سياسة الوصول إلى Docker في نظامك تتطلب ذلك.
تختفي الملفات بعد التنظيف: احفظ البيانات المهمة في وحدة تخزين أو ربط تحميل، وليس فقط في الطبقة القابلة للكتابة في الحاوية.