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


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

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

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

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

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

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

docker stop NAME_OF_INSTANCE
محطة توضح مخرجات أمر إيقاف عامل الإرساء.

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

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

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

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

docker save -o mycontainerimage.tar mycontainerimage

استخدم طريقة نقل الملفات المفضلة لديك وانسخ ملف .tar إلى المضيف حيث تريد نقل حاوية Docker الخاصة بك. على سبيل المثال، ينقل الأمر التالي صورة Nginx Docker الخاصة بي باستخدام 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 إلى حاويتك

لاستيراد ملف حجم ‎.tar Docker، قم أولاً بتنزيل 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 الخفي لنظامك الجديد:

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

قم بلصق كتلة التعليمات البرمجية التالية داخل ملف الإنشاء الخاص بك، ثم قم بتعديلها لتناسب احتياجاتك المحددة:

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.

حقوق الصورة: ماكس دوزيج عبر Unsplash. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.

اشترك في نشرتنا الإخبارية!

يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك

رمسيس الأحمر

رمسيس كاتب في مجال التكنولوجيا عاش مع أجهزة الكمبيوتر طوال حياته. قارئ غزير الإنتاج وطالب في الأنثروبولوجيا، وهو شخصية غريبة الأطوار تكتب مقالات عن Linux وأي شيء لا شيء.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى