كيفية نسخ/نقل حاوية Docker إلى مضيف آخر
نظرًا لأن حاويات Docker عبارة عن صناديق صغيرة من البرامج، فيمكنك بسهولة نسخها ونقلها من كمبيوتر إلى آخر. من المحتمل أنك عملت على مثيل Docker على جهاز الكمبيوتر المحلي الخاص بك وقررت نقله إلى خادم أكثر قوة. أو ربما تريد فقط نشر حاويتك المخصصة على أجهزة كمبيوتر متعددة، و”نسخها ولصقها” حولها. وفي أحيان أخرى، قد تكون غير راضٍ عن مزود الحوسبة السحابية وترغب في التبديل إلى مزود آخر. نعرض لك هنا كيفية نقل صورة حاوية Docker وأحجام البيانات الموجودة لديك من مضيف Linux إلى آخر.
جيد ان تعلم: ابدأ باستخدام الحاويات عن طريق تثبيت Docker على توزيعة Linux لديك.
حفظ صورة الحاوية من المضيف المصدر
ابدأ بإدراج حاويات Docker المتاحة التي تعمل على نظامك. في حالتي، أريد تصدير حاوية Nginx 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 المؤرشفة حديثًا إلى جهازك البعيد:
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
تأكد من أن الصورة المستوردة تعمل بشكل صحيح عن طريق إدراج كافة الحاويات النشطة في النظام:
لعِلمِكَ: قم بتحويل Raspberry Pi الخاص بك إلى معرض صور محمول قادر على تثبيت Photoprism مع Docker.
استيراد وحدة تخزين Docker إلى حاويتك
لاستيراد ملف حجم .tar Docker، قم أولاً بتنزيل Git على مضيفك الجديد:
تمامًا كما هو الحال مع نظامك الأصلي، قم بتنزيل البرنامج النصي المساعد docker-volume.sh، وقم بتعيين بتات الأذونات الخاصة به على “تنفيذ”، ثم انسخه إلى دليل “/usr/local/bin” الخاص بجهازك الجديد.
أنشئ حاوية 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 تم إرفاقها مسبقًا بحاويتك بشكل صحيح قبل بدء الصورة المستوردة.
وأخيرًا، ابدأ تشغيل حاوية 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”.
يعد تعلم كيفية نسخ حاوية Docker الخاصة بك ونقلها إلى مضيفي Linux الآخرين مجرد واحدة من المهام القليلة التي يمكنك القيام بها باستخدام جهازك. استكشف عالم الاستضافة الذاتية الرائع هذا عن طريق تثبيت خادم Minecraft على Linux باستخدام Docker.
حقوق الصورة: ماكس دوزيج عبر Unsplash. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.
اشترك في نشرتنا الإخبارية!
يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك