إذا كنت بحاجة إلى نسخ الملفات من مضيف Docker إلى حاوي Docker الخاص بك، فإن هذا البرنامج التعليمي مناسب لك.
في هذا البرنامج التعليمي، ستتعلم كيفية نسخ الملفات من مضيف Docker إلى حاوية Docker باستخدام طرق متنوعة.
لنبدأ!
المتطلبات
إذا كنت ترغب في متابعة الخطوات بدقة، تأكد من وجود ما يلي:
- A Linux host. This tutorial uses Ubuntu 18.04.5 LTS.
- تثبيت Docker على مضيف Linux. يستخدم هذا البرنامج التعليمي إصدار Docker v19.03.11. يمكنك تأكيد إصدار Docker الخاص بك عن طريق تشغيل
docker version
.
- تنزيل أي صورة Docker وتوفرها. يستخدم هذا البرنامج التعليمي أحدث صورة NGINX Docker المتاحة على Docker Hub.
نسخ الملفات باستخدام أمر docker cp
لبدء هذا البرنامج التعليمي، ستتعلم كيفية نسخ الملفات من مضيف Docker إلى الحاويات باستخدام docker cp
الأمر. يقوم أمر docker cp
بنسخ الملفات أو المجلدات بين الحاوية ونظام الملفات المحلي لمضيف Docker الخاص بك والعكس.
دعونا نتعلم كيفية استخدام أمر Docker cp مع مثال.
1. افتح الطرفية على جهازك المحلي.
myfile.txt باستخدام أمر touch
. سيتم نسخ myfile.txt من مضيف Docker إلى الحاوية.
docker run سيقوم بإنشاء حاوية جديدة في الخلفية. يحتوي الأمر أدناه على ثلاثة معلمات موضحة أدناه:
d
flag that runs the container in the background and keeps it alive until deleted.p
flag publishes a container’s port80
to the host on port80
.-
nginx
سيكون الصورة التي سيتم استخدامها لتشغيل الحاوية.

4. تحقق مما إذا كانت حاوية Docker قد تم إنشاؤها بنجاح باستخدام أمر docker ps
. بعد تنفيذ أمر docker ps
, يجب أن ترى قيمة جديدة تم إنشاؤها تحت السمة CONTAINER ID (في الحالة أدناه ccae4670f030
) باستخدام صورة NGINX التي تؤكد أن الحاوية تم إنشاؤها بنجاح.

قبل تنفيذ أمر Docker cp، يكون بناء جملة أمر Docker cp على النحو التالي:
-
CONTAINER: SRC_PATH
يحدد المسار المصدري للحاوية. -
DEST_PATH
هو المسار الوجهة على المضيف. -
CONTAINER: DEST_PATH
هو المسار الوجهة على الحاوية.
بالإضافة إلى ذلك، يمكنك أيضًا إضافة options
مع المعلمات أدناه في الأمر كما يلي:
- استخدام الأرشيف أو أ – ينسخ جميع أذونات المستخدم والمجموعة الأساسية للملفات والمجلدات.
- استخدام إل – تحديد الخيار إل سيسمح بنسخ أي رابط رمزي في مسار المصدر إلى مسار الوجهة.
5. بعد ذلك، قم بتنفيذ الأمر docker cp
. سيقوم الأمر docker cp
بنسخ myfile.txt الذي قمت بإنشائه سابقًا إلى دليل /usr/share في الحاويات. ccae4670f030
هو معرف الحاوية التي سيتم نسخ myfile.txt إليها.
6. في النهاية، ادخل إلى الحاوية التي تعمل عبر تشغيل الأمر docker exec
مع /bin/bash
، والذي يُستخدم كالقشرة الافتراضية لتسجيل الدخول لمستخدم النظام Linux.
- العلامة
i
تشير إلى أنك ترغب في فتح جلسة SSH تفاعلية إلى الحاوية. العلامةi
لا تغلق جلسة SSH حتى لو لم تكن الحاوية متصلة. - العلامة
t
تخصص نموذجًا افتراضيًا لل-TTY الذي يجب استخدامه لتشغيل الأوامر بشكل تفاعلي.sudo docker exec -it ccae4670f030 /bin/bash
ستلاحظ أدناه أنك الآن متصل بقشرة الحاوية عند تشغيل docker exec
.

7. بعد تسجيل الدخول إلى الحاوية، تحقق مما إذا كان قد تم نسخ myfile.txt إلى الحاوية باستخدام أمر ls.
ls
هو أمر لعرض ملفات الكمبيوتر في نظام التشغيل Unix ومشابه له.grep
سيبحث عن جميع الملفات أو المجلدات التي تبدأ بالسلسلةmy
داخل دليل usr/share.

نسخ الملفات باستخدام ملف DockerFile
في القسم السابق، تعلمت كيفية نسخ الملفات إلى الحاوية باستخدام أمر Docker cp. ماذا لو كنت بحاجة إلى نسخ عدة ملفات في مرة واحدة؟ بالتأكيد، يصبح تشغيل أوامر متعددة أمرًا مرهقًا! لحل مشكلة تشغيل العديد من أوامر cp، لماذا لا تجرب نسخ الملفات أو المجلدات إلى الحاويات باستخدام Dockerfile مع أوامر COPY
؟
نشر حاوية ونسخ الملفات/المجلدات باستخدام Dockerfile يسمح لك بإزالة خطوات النسخ اليدوية التي قمت بها في القسم السابق. Dockerfile هو وثيقة نصية تحتوي على جميع الأوامر التي يمكن للمستخدم استدعاؤها على سطر الأوامر لتجميع صورة.
لنقم بإنشاء Dockerfile، تشغيل حاوية منه، وأخيرًا نسخ الملفات.
1. قم بإنشاء مجلد باسم ~/host-to-container-copy-demo، ثم قم بتغيير (cd
) دليل العمل إلى ذلك المجلد. سيحتوي هذا المجلد على جميع الملفات التي ستقوم بإنشائها في هذا العرض التوضيحي.
2. الآن، قم بإنشاء ملفي نص بأسماء myfile1.txt و myfile2.txt، قم بنسخهما ولصقهما في الملفات، واحفظهما في دليل ~/host-to-container-copy-demo.
3. قم بإنشاء ملف آخر، وانسخ/الصق التكوين أدناه، واحفظ الملف بأسم Dockerfile داخل الدليل ~/host-to-container-copy-demo. عند الانتهاء، سيقوم Docker باستخدام هذا DockerFile لتشغيل جميع الأوامر اللازمة لبناء صورة Docker جديدة فوق أي صورة أساسية.
الـ DockerFile أدناه يحتوي على خطوات/تعليمات مختلفة ستقوم ببناء الحاوية الجديدة:
FROM
– تعليمة FROM تهيئ مرحلة بناء جديدة وتحدد الصورة الأساسية للتعليمات التالية.COPY
– تعليمة COPY تقوم بنسخ ملف من جهاز الاستضافة (مضيف Docker) إلى الحاوية.
4. التحقق من جميع الملفات المطلوبة لإنشاء الصورة الجديدة عن طريق تشغيل الأمر tree
. يجب أن تظهر Dockerfile، myfile1.txt، و myfile2.txt تحت الدليل ~/host-to-container-copy-demo.

5. بعد ذلك، قم ببناء الصورة عن طريق تشغيل الأمر docker build
. يتم استخدام العلم t
لوسم الصورة updated_ubuntu_image
بالعلامة latest
و.
يسمح لـ Docker بالاختيار من جميع الملفات الضرورية من دليل العمل الحالي.

docker build
command 6. الآن، قم بالتحقق من الصورة التي تم بناؤها حديثًا updated_ubuntu_image
عن طريق تشغيل الأمر docker images
. لاحظ السمة REPOSITORY. هذه السمة هي العلامة التي تم إنشاؤها بالعلم -t
في الخطوة السابقة.

7. في النهاية، قم بتشغيل حاوية Docker باستخدام الصورة التي تم بناؤها حديثًا عن طريق تشغيل الأمر docker run
. يُستخدم العلم -it
لتخصيص pseudo-terminal متصل بـ stdin للحاوية. bash
يوفر القشرة الافتراضية لتسجيل الدخول لمستخدم نظام Linux.
سترى الآن أنك الآن في قشرة Bash لحاوية Docker.

8. بعد ذلك، قم بالتحقق مما إذا كانت الملفات قد تم نسخها بنجاح في الحاوية في الدلائل /tmp و /usr/share عن طريق تشغيل الأمر ls
.

تثبيت حجم التخزين والوصول إلى الملفات باستخدام Docker Volume
Command
حتى الآن، لقد تعلمت كيفية نسخ الملفات من المضيف إلى الحاوية باستخدام نهجين مختلفين باستخدام أمر docker cp
وDockerFile. هذه المرة، دعنا نتعلم كيفية مشاركة أنظمة الملفات بسهولة بين المضيف والحاويات باستخدام الأمر docker volume
.
بفرض أنك ما زلت مسجّل الدخول إلى الطرفية:
1. قم بإنشاء حجم على مضيف Docker عن طريق تشغيل الأمر docker volume create
. سينشئ الأمر أدناه حجمًا يسمى my-vol
. sudo docker volume create my-vol
2. تحقق مما إذا تم إنشاء الحجم بنجاح عن طريق تشغيل الأمر docker volume ls
. يقوم الأمر docker volume ls بسرد الحجم. بعد تشغيل الأمر docker volume ls
، سترى my-vol
في سمة VOLUME NAME مما يؤكد أن الحجم تم إنشاؤه بنجاح.

3. بعد ذلك، قم بتشغيل الحاوية باستخدام الأمر docker run
.
- تستخدم الحاوية التي تحمل اسم
volume_testing
صورةnginx: latest
. d
flag runs the container in the background and keeps it alive until deleted.v
flag mounts the volumemy-vol
created on Docker host to the container’s destination/app
directory.

٤. تحقق مما إذا كان المجلد my-vol الذي أنشأته سابقًا مرتبطًا بشكل صحيح مع الحاوية باستخدام أمر docker inspect
. يوفر أمر docker inspect معلومات عن الحاوية. بعد تشغيل أمر docker inspect
، سيعرض جميع تفاصيل الحاوية المحددة (volume_testing
)، بما في ذلك تفاصيل الارتباط، كما هو موضح أدناه.
أدناه، يؤكد لقطة الشاشة الصورة أن المجلد (my-vol
) الذي أنشأته على المضيف متصل بنجاح بمجلد الحاوية /app
.

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