تكنولوجيا

كيفية تشغيل تطبيقات واجهة المستخدم الرسومية في حاويات Docker – CloudSavvy IT

يستخدم Docker عادةً لتطبيقات الخلفية المعبأة في حاويات وبرامج CLI. يمكنك أيضًا استخدامه لتشغيل برامج الرسومات! يمكنك استخدام خادم X موجود حيث يقوم المضيف بالفعل بتشغيل بيئة رسومية ، أو يمكنك تشغيل خادم VNC في حاوية.

بادئ ذي بدء ، من المهم فهم القدرات الفعلية لـ Docker. “حاويات” Docker هي شكل من أشكال التغليف ، تشبه على ما يبدو الأجهزة الافتراضية. على عكس الأجهزة الافتراضية ، تشترك الحاويات وأنظمة المضيف في نفس نواة Linux.

المكون التالي هو نظام X Window. يوفر خادم X (مثل Xorg) وظائف الرسومات الأساسية لنظام Unix. بدون X Server ، لا يمكن تقديم تطبيقات GUI. (يمكن استخدام أنظمة النوافذ الأخرى ، مثل Wayland. في هذه المقالة ، سنركز على X.)

من الناحية النظرية ، من الممكن محاولة تشغيل X Server في Docker ، لكن نادرًا ما يتم استخدامه. تحتاج إلى تشغيل Docker في الوضع المميز (--privileged) حتى يتمكن من الوصول إلى أجهزة مضيفك. سيحاول بدء تشغيل الخادم المطالبة بجهاز الفيديو الخاص بك ، مما يؤدي عادةً إلى فقدان إخراج الفيديو لأن خادم X الأصلي للمضيف يسحب جهازه.

أفضل طريقة هي تثبيت مقبس X Server الخاص بالمضيف في حاوية Docker. هذا يسمح لحاويتك باستخدام خادم X الذي لديك بالفعل. بعد ذلك ، سيظهر تطبيق GUI قيد التشغيل في الحاوية على سطح المكتب الحالي.

لماذا تشغيل تطبيقات واجهة المستخدم الرسومية في Docker؟

عند تقييم البرامج الجديدة ، قد يكون تشغيل برامج واجهة المستخدم الرسومية في Docker تقنية مفيدة. يمكنك تثبيت البرنامج في حاوية نظيفة دون تلويث المضيف بحزم برامج جديدة.

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

إعادة توجيه مقبس X إلى حاوية Docker

يعد توفير حاويات Docker مع إمكانية الوصول إلى مقبس المضيف X عملية بسيطة.يمكن العثور على فتحة X في المواقع التالية /tmp/.X11-unix على مضيفك. يجب تحميل محتويات هذا الدليل في حجم Docker المخصص لهذه الحاوية.تحتاج إلى استخدام ملفات host يمكن أن يعمل وضع الشبكة بشكل طبيعي.

يجب عليك أيضًا تقديم ملف Exhibit متغيرات البيئة. يشير هذا إلى خادم X الذي يتصل به عميل X (برنامج الرسومات الخاص بك).وضع Display القيمة في الحاوية $Exhibit على مضيفك.

يمكنك تغليف كل هذه التكوينات في جهاز واحد docker-compose.yml ملف:

model: "3"

products and services:
  application:
    picture: my-app:most up-to-date
    develop: .
    ecosystem:
      - Display screen=$Display screen
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
    community_method: host

بعد ذلك ، تحتاج إلى إنشاء ملف Dockerfile لتطبيقك. هذا مثال على تشغيل متصفح الويب Firefox:

FROM ubuntu:hottest
Operate apt-get update && apt-get put in -y firefox
CMD ["/usr/bin/firefox"]

الآن قم ببناء الصورة وتشغيلها:

docker-compose construct
docker-compose up

يجب أن تظهر نافذة Firefox جديدة على سطح المكتب! سيتم تشغيل مثيل Firefox في الحاوية ، بشكل مستقل عن أي نوافذ Firefox مفتوحة أخرى. ستشارك الحاوية في مقبس X الخاص بمضيفك ، لذلك سيستمر عرض Firefox المعبأ على سطح المكتب.

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

التعامل مع مصادقة X

قد تحتاج إلى المصادقة على الحاوية للوصول إلى خادم X. احصل أولاً على رمز مصادقة X من مضيفك.يركض xauth list واكتب أحد ملفات تعريف الارتباط. تحتاج إلى نسخ الخط بأكمله.

في حاوية Docker ، قم بتثبيت xauth رزمة.ثم اركض xauth increase، قم بتمرير الرمز الذي نسخته في الخطوة السابقة.

apt install -y xauth
xauth increase 

يجب الآن المصادقة على الحاوية الخاصة بك بنجاح بواسطة خادم X.

طريقة تشغيل خادم VNC آخر

إذا لم تتمكن من استخدام إعادة توجيه مقبس X ، فيمكنك إعداد خادم VNC داخل الحاوية. بهذه الطريقة ، يمكنك عرض التطبيقات الرسومية في الحاوية عن طريق الاتصال من عميل VNC الذي يعمل على المضيف.

أضف برنامج خادم VNC إلى الحاوية الخاصة بك:

FROM ubuntu:most up-to-date
Operate apt-get update && apt-get set up -y firefox x11vnc xvfb
Run echo "exec firefox" > ~/.xinitrc && chmod +x ~/.xinitrc
CMD ["v11vnc", "-create", "-forever"]

عند تشغيل هذه الحاوية ، سيتم إنشاء خادم VNC تلقائيًا. يجب ربط منفذ المضيف بالمنفذ 5900 من الحاوية ، وهو المنفذ الذي سيعرضه خادم VNC.

عند إضافة Firefox إلى Firefox ، سيبدأ عند بدء التشغيل .xinitrc. سيتم تنفيذ هذا الملف عند بدء تشغيل خادم VNC وتهيئة عرض جديد.

للاتصال بالخادم ، ستحتاج إلى عميل VNC على مضيفك.ابحث عن عنوان IP للحاوية عن طريق التشغيل docker ps، قم بتدوين معرف الحاوية وقم بتمريره إلى docker inspect . ستجد عنوان IP في عنوان IP بالقرب من أسفل الإخراج. Community العقدة.

استخدم عنوان IP للحاوية مع عميل VNC. لا يلزم المصادقة للاتصال على المنفذ 5900. الآن يجب أن تكون قادرًا على التفاعل مع البرنامج الرسومي الذي يعمل في حاوية Docker.

ختاما

عند تشغيل برامج الرسومات في بيئة حاوية ، يمكنك الاختيار بين طريقتين. للاستخدام العام ، عادةً ما توفر الاستضافة المشتركة مقابس X الحل الأبسط. يمكنك أيضًا اختيار تشغيل خادم VNC في حاوية. تكون هذه الطريقة أكثر أمانًا عندما لا تقوم بإنشاء صورة حاوية.

عندما تقوم بتقييم برنامج أو تحتاج إلى تشغيل نسختين من الحزمة ، ستكون التطبيقات الرسومية المعبأة في حاويات مفيدة للغاية. يمكنك استخدام البرنامج على سطح مكتب موجود دون لمس تكوين المضيف.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.

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