على ماذا؟ تأتي إلي جميع أنواع الأفكار باستمرار ، وأريد أن أجرب بعضها على الفور ، لكن محطة العمل ليست دائمًا في متناول اليد ، لذلك قمت بإعداد IDE لكل ما يأتي في متناول اليد. ونتيجة لذلك ، بدأت الأجهزة تشوش ، وأصبح من الصعب صيانتها وتحديثها.لحل هذه المشكلة ، قررت وضع مثل هذا "دفتر الملاحظات" في السحابة ، والذي سيتم تحديثه يوميًا وحذف كل القمامة المتراكمة. وللعمل ، اتصل به عن بعد.
ونتيجة لذلك ، دون الشك ، قام بعمل أداة مريحة للغاية لحل عدد كبير من المهام: دفتر ملاحظات ، موقع اختبار ، لمعرفة ما لا يعرضه الهاتف ، وضع حماية آمن ، وتشغيل البرامج النصية للبرامج التي تعمل فقط على واجهة المستخدم الرسومية وغيرها الكثير. وما إلى ذلك ، وفي المقالة ، أريد مشاركة طريقة إنشاء مثل هذه الحاويات.لإنشاء مثل هذه الحاوية ، يجب عليك كتابة ملف Dockerfile. وفي المقالة سأصف العملية برمتها من إنشائها. من لا يريد أن يخلق نفسه ، لكنه يريد أن يأخذ ويحاول ، ثم في أسفل المقالة ستكون هناك روابط إلى الصور النهائية.نظام التشغيل
سوف يفعل أي لينكس. أنا شخصياً أفضل OpenSuse الجميل ، ولكن بمقارنة استهلاك الذاكرة مع CentOS ، قررت اختيار الأخير. في الواقع ، كلما استهلكت الحاوية ذاكرة أقل ، يمكنك توفير المزيد في الاستضافة.لنبدأ بإنشاء ملف إرساء:FROM centos:7
الوصول عن بعد
من أجل الاتصال بالحاوية عليه ، يجب عليك تكوين خادم الوصول عن بعد VNC. يجب فهم عاملين لهذا:- لا يحتوي النظام على شاشة. لذلك ، يجب محاكاته. هناك خادم خاص x0vncserver لهذا.
- لا يجب أن يكون خادم VNC واسع الحيلة. بعد كل شيء ، عليك أن تدفع لهم. ويجب أن يكون التأخر في إرسال الإشارة ضئيلًا ، وإلا فإنه يسبب عدم الراحة.
لحل كلتا المشكلتين ، اخترت TigerVNC Server للخادم و TightVNC للعميل. يتم تضمين خادم TigerVNC في تسليم أي لينكس ، خفيف الوزن وسريع ، كما أنه يدعم العمل بدون شاشة من خلال x0vncserver. يوفر عميل TightVNC نقلًا سريعًا للصور بحيث يبدو أنه ليس اتصالاً عن بُعد ، ولكنه برنامج يعمل على جهاز كمبيوتر.تمديد ملف Dockerfile:FROM centos:7
RUN yum install -y epel-release dnf \
&& \
dnf install -y \
tigervnc-server \
&& \
yum clean all && dnf clean all \
&& \
rm -rf /var/cache/yum/* && rm -rf /var/cache/dnf/*
بعد تثبيت البرامج ، نقوم بمسح ذاكرة التخزين المؤقت لتفتيح وزن الصورة.سطح المكتب
أنا حقا أحب KDE مع موضوع Breeze ، لكن KDE هو سطح مكتب شجاع للغاية. كان غنوم ومشتقاته أكثر شراهة. Xfce ، الثلج ليس جميلًا جدًا. لحسن الحظ ، هناك حل - سطح مكتب LXQT بموضوع Kde-Plasma.قم بتثبيت سطح المكتب:FROM centos:7
RUN yum install -y epel-release dnf \
&& \
dnf install -y \
tigervnc-server \
openbox obconf-qt \
lxqt-about lxqt-common lxqt-config lxqt-globalkeys lxqt-notificationd \
lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-qtplugin lxqt-runner \
lxqt-session pcmanfm-qt \
dejavu-sans-mono-fonts \
xterm nano htop expect sudo \
&& \
yum clean all && dnf clean all \
&& \
rm -rf /var/cache/yum/* && rm -rf /var/cache/dnf/*
أكثر قليلا ويمكنك الركض.إنشاء المستخدم
في الحاوية ، من الضروري العمل من بعض المستخدمين. للقيام بذلك ، قم بإنشائه وتعيين كلمة مرور ، وكذلك تعيين كلمة مرور للمستخدم الجذر:... Dockerfile
ENV HOME=/home/headless
RUN /bin/dbus-uuidgen --ensure && \
useradd headless && \
echo "centos" | passwd --stdin root && \
echo "centos" | passwd --stdin headless
هنا بلا رأس هو المستخدم الذي نقوم بإنشائه والذي سنعمل منه ، "centos" هي كلمة المرور التي يحددها المستخدم والجذر. من الأفضل تمريرها من المعلمات الخارجية عندما تبدأ الحاوية ، ولكن حتى في هذا الشكل لن تكون الحاوية عرضة للخطر ، لأن سيكون الاتصال محميًا بكلمة مرور في VNC عبر كلمة المرور في الوسيطات.تكوين بدء تشغيل خادم vnc
للبدء ، تحتاج إلى برنامج نصي إضافي يقوم بتكوين خادم VNC الخاص بنا:
spawn /usr/bin/vncserver :1 -fg -geometry 1820x960
expect "Password:"
send "$env(password)\r"
expect "Verify:"
send "$env(password)\r"
expect "Would you like to enter a view-only password (y/n)?"
send "n\r"
set timeout -1
expect eof
يجب وضعه بجانب ملف Dockefile ، وبعد ذلك سيتم تضمينه في الحاوية وسيبدأ البرنامج منه. في هذا الملف ، يجب عليك تحديد الدقة التي تخطط للعمل بها ، على سبيل المثال ، لدي مجموعة 1820x960. إذا قمت بتحديد أقل من حجم نافذة العميل ، فقد يتعطل الخادم بسبب نقص الذاكرة. إذا حددت المزيد ، فستحتاج إلى تحجيم الصورة وستصبح عناصر سطح المكتب صغيرة جدًا. أيضًا في هذا البرنامج النصي ، سيتم تعيين كلمة مرور من المتغيرات التي سيتم تمريرها في معلمات تشغيل الحاوية.يبقى نسخ هذا الملف إلى الحاوية وإضافة المعلمات لإطلاقه:... Dockerfile
COPY ./startup.sh ${HOME}
RUN mkdir -p ${HOME}/.vnc \
&& \
echo '#!/bin/sh' > ${HOME}/.vnc/xstartup && \
echo 'exec startlxqt' >> ${HOME}/.vnc/xstartup && \
chmod 775 ${HOME}/.vnc/xstartup \
&& \
chown headless:headless -R ${HOME}
WORKDIR ${HOME}
USER headless
ENTRYPOINT ["expect", "./startup.sh"]
هذا كل شيء ، يمكنك الركض. إذا كنت مرتبكًا في تجميع ملف Dockerfile ، فيمكن العثور على نسخته الكاملة في المستودع الخاص بي ، والحاوية النهائية في مركز عامل الميناء .لبدء الحاوية النهائية ، يجب تشغيل الأمر:docker run -it --rm -e password='YOUR_VNC_PASSWORD' -p5901:5901 labeg/centos-lxqt-vnc
والتواصل باستخدام عميل TightVNC.
بعد الاتصال ، يجب عليك إدخال كلمة مرور المستخدم المحددة مسبقًا. من المستحسن أيضًا تغييره على الفور لمزيد من الأمان.لتمكين التصميم الجميل كما في لقطة الشاشة أعلاه ، انتقل إلى ابدأ> التفضيلات> المظهر> موضوع LXQt وحدد سمة Kde-plasma.برامج العمل
يمكنك الآن إنشاء صورة ثانية باستخدام برامج العمل. للقيام بذلك ، ما عليك سوى التقاط الصورة التي تم إنشاؤها أعلاه وإضافتها بالبرامج النصية لتثبيت الحزم:FROM labeg/centos-lxqt-vnc:latest
USER root
RUN rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \
&& \
rpm --import https://packages.microsoft.com/keys/microsoft.asc && \
sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo' \
&& \
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" && \
su -c 'curl https://download.mono-project.com/repo/centos7-vs.repo | tee /etc/yum.repos.d/mono-centos7-vs.repo' \
&& \
yum install -y https://centos7.iuscommunity.org/ius-release.rpm \
&& \
curl -sL https://rpm.nodesource.com/setup_13.x | bash - \
&& \
dnf install -y geany git2u git2u-gui code monodevelop firefox dotnet-sdk-3.1 nodejs gnome-terminal gnome-system-monitor \
&& \
npm install -g gulp typescript npm-check-updates \
&& \
chown headless:headless -R ${HOME}
USER headless
RUN code --install-extension ms-vscode.vscode-typescript-tslint-plugin && \
code --install-extension dbaeumer.vscode-eslint && \
code --install-extension mrmlnc.vscode-scss && \
code --install-extension visualstudioexptteam.vscodeintellicode && \
code --install-extension ms-dotnettools.csharp && \
code --install-extension joelday.docthis && \
code --install-extension mrmlnc.vscode-remark && \
code --install-extension eamodio.gitlens
يقوم البرنامج النصي بتثبيت أدوات Typescript و C # تحت Linux. هذا هو NodeJS ، VS Code مع الامتدادات اللازمة و Monodevelop (ويعرف أيضًا باسم Visual Studio لنظام التشغيل Mac).يبدأ بالبساطة كما في الصورة السابقة:docker run -it --rm -e password='YOUR_VNC_PASSWORD' -p5901:5901 labeg/devpc
الآن في ثوان يمكنك نشر بيئة عمل نظيفة.
المستودعات والصور النهائية
إذا كنت بحاجة إلى مستودعات وصور جاهزة ، أو إذا كنت ترغب في تحسين المستودعات الموجودة ، على سبيل المثال ، من خلال معلمات بدء التشغيل ، قم بتعيين كلمة مرور المستخدم أو دقة الشاشة أو إعادة تشغيل خادم VNC بعد تعطله ، ثم مرحبًا بك في مستودعاتي.صورة بسيطة مع Gihub سطح المكتب Dockerhub .صورة تحتوي على Typescript وأدوات C # Gihub Dockerhub .