• Sat. Sep 21st, 2024

كيفية نسخ/نقل حاوية Docker إلى مضيف آخر

Byadmin

Aug 4, 2024

صورة لشخص يعمل على مكتب الكمبيوتر.

نظرًا لأن حاويات Docker عبارة عن صناديق صغيرة من البرامج، فيمكنك بسهولة نسخها ونقلها من كمبيوتر إلى آخر. قد تكون قد عملت على نسخة Docker على الكمبيوتر المحلي الخاص بك وقررت نقلها إلى خادم أكثر قوة. أو ربما تريد فقط نشر الحاوية المخصصة الخاصة بك على أجهزة كمبيوتر متعددة، “نسخها ولصقها”. في أوقات أخرى، قد تكون غير راضٍ عن مزود الحوسبة السحابية وترغب في التبديل إلى مزود آخر. هنا، نعرض لك كيفية نقل صورة حاوية Docker الحالية ومجلدات البيانات من مضيف Linux إلى آخر.

جيد ان تعلم: ابدأ باستخدام الحاويات عن طريق تثبيت Docker على توزيعة Linux الخاصة بك.

حفظ صورة الحاوية من المضيف المصدر

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

محطة تسلط الضوء على حاويات Docker المتوفرة لنظام ما.

ابحث عن الحاوية التي تريد نسخها ثم أوقف المثيل:

docker stop NAME_OF_INSTANCE
محطة طرفية تظهر إخراج أمر إيقاف docker.

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

docker commit NAME_OF_INSTANCE mycontainerimage
محطة طرفية تعرض مخرجات أمر docker commit الذي ينشئ صورة جديدة من الصورة التي يتم تشغيلها حاليًا.

لاحظ أنه إذا كانت المثيل قيد التشغيل حاليًا، فسيؤدي هذا الإجراء إلى إيقافه مؤقتًا أثناء حفظ محتوياته. إذا كانت هذه مشكلة، فيمكنك تجنب هذا الإيقاف المؤقت عن طريق إدخال docker commit -p=false NAME_OF_INSTANCE mycontainerimage بدلاً من ذلك. ومع ذلك، لا تفعل هذا إلا إذا كان ذلك ضروريًا للغاية. تزداد احتمالات إنشاء صورة ببيانات غير متسقة/غير كاملة في هذه الحالة.

الآن، احفظ صورة حاوية Docker التي قمت بتثبيتها حديثًا في ملف أرشيف:

docker save -o mycontainerimage.tar mycontainerimage

استخدم طريقة نقل الملفات المفضلة لديك وانسخ ملف .tar إلى المضيف الذي تريد نقل حاوية Docker إليه. على سبيل المثال، ينقل الأمر التالي صورة Docker الخاصة بي في Nginx باستخدام scp:

scp ./mycontainerimage.tar ramces@my.ip.address.here:/home/ramces/

تصدير مجلد Docker من الحاوية الخاصة بك

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

لتصدير حجم البيانات الخاص بك بشكل صحيح، قم أولاً بتثبيت Git على جهازك المحلي:

قم بتشغيل الأمر التالي لتنزيل البرنامج النصي لتصدير الحجم لـ Docker:

git clone https://github.com/ricardobranco777/docker-volumes.sh.git

تأكد من أن البرنامج النصي للتصدير يحتوي على بتات الأذونات الصحيحة، ثم انسخه إلى “/usr/local/bin:” على جهازك

sudo chmod +x ./docker-volumes.sh/docker-volumes.sh
sudo cp ./docker-volumes.sh/docker-volumes.sh /usr/local/bin/

اختبر ما إذا كان البرنامج النصي الخاص بك يعمل بشكل صحيح، ثم استخرج جميع المجلدات المرتبطة بالحاوية الخاصة بك:

docker-volumes.sh -h
docker-volumes.sh NAME_OF_INSTANCE save mycontainerimage-volume.tar
محطة طرفية تُظهر عملية النسخ الاحتياطي لأي أحجام بيانات مرتبطة بحاوية Docker.

أرسل ملفات مجلد Docker المؤرشفة حديثًا إلى جهازك البعيد:

scp ./mycontainerimage-volume.tar ramces@my.ip.address.here:/home/ramces/

تحميل صورة الحاوية على المضيف الوجهة

قم بتسجيل الدخول إلى المضيف البعيد، ثم قم بتشغيل الأمر التالي لتحميله إلى برنامج Docker الخاص بالجهاز البعيد:

docker load -i ./mycontainerimage.tar

يستخدم docker create لإعادة تهيئة صورة حاوية Docker الخاصة بك باستخدام علامات التشغيل الأصلية من جهاز المصدر الخاص بك. على سبيل المثال، كانت حاوية Nginx Docker الخاصة بي في الأصل تحتوي على المنفذ 80 المطابق لمنفذ جهاز المضيف 8080:

docker create --name my-nginx-container -p 8080:80 mycontainerimage

قم بتشغيل حاوية Docker المستوردة حديثًا:

docker start my-nginx-container

تأكد من أن الصورة المستوردة تعمل بشكل صحيح عن طريق إدراج جميع الحاويات النشطة في النظام:

محطة طرفية تعرض نفس صورة حاوية Docker قيد التشغيل على نظام مختلف.

لعِلمِكَ: قم بتحويل Raspberry Pi الخاص بك إلى معرض صور محمول قادر عن طريق تثبيت Photoprism مع Docker.

استيراد مجلد Docker إلى الحاوية الخاصة بك

لاستيراد ملف وحدة تخزين Docker .tar، قم أولاً بتنزيل Git على المضيف الجديد الخاص بك:

تمامًا كما هو الحال مع نظامك الأصلي، قم بتنزيل البرنامج النصي المساعد docker-volume.sh، واضبط بتات الأذونات الخاصة به على “تنفيذ”، ثم انسخه إلى دليل “/usr/local/bin” على جهازك الجديد.

محطة طرفية تُظهر عملية الحصول على البرنامج النصي Docker Volume وتثبيته للنسخ الاحتياطي للبيانات المرتبطة بالحاويات.

قم بإنشاء حاوية Docker جديدة باستخدام ملف الصورة المُصدر:

docker create --name my-nginx-container -v myvol:/usr/share/nginx/html -p 8080:80 mycontainerimage

قم بتشغيل البرنامج النصي docker-volume.sh باستخدام ملف .tar الأصلي لتحميله إلى برنامج Docker daemon الخاص بنظامك الجديد:

docker-volumes.sh my-nginx-container load mycontainerimage-volume.tar

ابدأ تشغيل حاوية Docker الجديدة الخاصة بك عن طريق تشغيل الأمر التالي:

docker start my-nginx-container

اختبر ما إذا كانت الحاوية الخاصة بك تقوم بتحميل وحدة التخزين الخاصة بك بشكل صحيح من خلال النظر إلى بيانات التكوين الداخلية الخاصة بها:

docker inspect -f '{{ .Mounts }}' my-nginx-container
محطة تسلط الضوء على بيانات الحجم المستوردة إلى الجهاز الجديد.

نقل الصورة دون إنشاء ملف

في بعض الأحيان قد ترغب في تخطي إنشاء mycontainerimage.tar.gz الملف. ربما لا تتوفر لديك مساحة قرص كافية نظرًا لأن الحاوية تحتوي على الكثير من البيانات. يمكنك حفظ الصورة ونقلها وتحميلها على المضيف الوجهة بأمر واحد. بعد تشغيل الأمر docker commit يمكنك استخدام الأمر الذي تمت مناقشته أعلاه، وهو:

docker save mycontainerimage | ssh ramces@my.ip.address docker load

يجب أن يعمل أيضًا من نظام Windows، لأنه يحتوي الآن على عميل SSH مدمج (لم يعد PuTTY ضروريًا).

استمر مع docker create الأمر الذي ينطبق على حالتك.

محطة طرفية تُظهر عملية إنشاء حاوية Docker جديدة بعد نقل صورتها عبر أنبوب SSH.

ملحوظة: تأكد من أنك قمت بتثبيت أي وحدة تخزين Docker تم إرفاقها مسبقًا بالحاوية الخاصة بك بشكل صحيح قبل بدء الصورة المستوردة.

أخيرًا، ابدأ تشغيل حاوية Docker المستوردة حديثًا عن طريق تشغيل docker start متبوعة باسم الحاوية الخاصة بك.

محطة طرفية تُظهر عملية بدء حاوية جديدة والتأكد من أنها تعمل بشكل صحيح.

استخدام Docker Compose لنقل نشر Docker بأكمله

بفضل مكون Compose الإضافي، يتيح لك Docker إنشاء برامج معقدة وتكوينها وتشغيلها دون القلق بشأن مجموعة البرامج الأساسية للخادم. وهذا بدوره يسمح لك بإنشاء عمليات نشر تطبيقات قابلة للتكرار عبر أنظمة Linux المختلفة.

لبدء نقل إعداد Docker الحالي إلى Docker Compose، تأكد أولاً من أن البرنامج الإضافي الخاص به موجود حاليًا في نظامك:

sudo apt install docker-compose-plugin docker-buildx-plugin

قم بإنشاء مجلد جديد في الدليل الرئيسي الخاص بك لتثبيت Docker Compose:

mkdir ~/my-docker-compose && cd ~/my-docker-compose

استخدم محرر النصوص المفضل لديك لإنشاء ملف “docker-compose.yml” لتطبيقك:

nano ./docker-compose.yml

قم بلصق كتلة التعليمات البرمجية التالية داخل ملف Compose الخاص بك، ثم قم بتعديلها وفقًا لاحتياجاتك المحددة:

version: '3'

volumes:
  myvol: # Replace with the name of your imported volume.

services:
  nginx:
    image: mycontainerimage # Replace with the name of your imported Docker image.
    ports:
      - "8080:80"
    volumes:
      - myvol:/usr/share/nginx/html # Replace "myvol" with the name of your mounted image.

احفظ ملف Compose الجديد، ثم قم بتشغيل الأمر التالي لبدء تشغيله:

أخيرًا، اختبر ما إذا كان نشر Compose يعمل بشكل صحيح. في حالتي، سأختبر حاوية Nginx Docker الخاصة بي من خلال فتح متصفح الويب والانتقال إلى “localhost:8080”.

لقطة شاشة تُظهر حاوية Nginx Docker المستوردة وهي تعمل بشكل صحيح على جهازها المضيف الجديد.

إن تعلم كيفية نسخ حاوية Docker ونقلها إلى مضيفين آخرين لنظام Linux هو مجرد إحدى المهام القليلة التي يمكنك القيام بها باستخدام جهازك. استكشف هذا العالم الرائع للاستضافة الذاتية من خلال تثبيت خادم Minecraft على Linux باستخدام Docker.

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *