في منشور سابق ، تحدثت عن كيف يساعدك SSHeller في نشر خادم OpenVPN بسرعة وسهولة. في الإصدار 1.1.0 ، تمت إضافة مكون إضافي آخر - Docker .
أريد أن أحذرك على الفور أنه إذا تم شحذ يديك تحت وحدة التحكم ، والتحكم في Docker عبر سطر الأوامر يبدو مناسبًا وبديهيًا ، فلا تحتاج إلى قراءة المزيد ، ولا تحتاج إلى كتابة أي شيء في التعليقات ، فأنا أعلم بالفعل أنك لا تحتاج إلى SSHeller.
ومن يحتاجه؟ بادئ ذي بدء ، مطورو تطبيقات الويب ، وكذلك كل من يحتاج إلى ترقية نوع من الخدمة بسرعة وسهولة ، سواء كان موقع ويب أو مدونة أو خدمة مشاركة ملفات مرتجلة.
كيف يعمل
نحن بحاجة إلى خادم مع أي توزيع Linux حديث تقريبًا. ولكن ، على عكس OpenVPN ، بالنسبة لـ Docker ، أوصي بـ Debian 9
أو Ubuntu 18.04
. مع Fedora
و Centos
تصبح الأمور أسوأ قليلاً ، حيث تحتاج إلى تثبيت المزيد من الحزم ، وتكوين التشغيل التلقائي بالإضافة إلى ذلك ، والعمل مع التخزين مختلف قليلاً.
الشيء الأكثر أهمية هو أنه يجب أن يكون إما آلة مادية أو افتراضية ، ولكن ليس حاوية (LXC ، لن تعمل OpenVZ). وتحتاج إلى وصول SSH. في المنشور الأخير ، يوجد وصف تفصيلي لكيفية التسجيل وبدء الخادم في DigitalOcean ، وفي النهاية - تعليمات أقل تفصيلاً قليلاً لـ Linode. تقدم كل من هذه الخدمات آلات بسيطة مقابل 5 دولارات شهريًا ومكافآت عند التسجيل عن طريق رابط الإحالة. بادئ ذي بدء ، سيكون هذا كافياً.
بمجرد الحصول على عنوان IP واسم المستخدم وكلمة المرور للخادم ، يمكنك تثبيت SSHeller. يمكنك تنزيله من الإصدارات على GitHub ، وهناك إصدارات لنظام التشغيل macOS و Windows و Linux. بعد البدء ، أضف خادمنا ، واتصل به وانتقل إلى المكون الإضافي Docker .

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

الوظائف الرئيسية
إطلاق الحاوية
في الجزء السفلي من مساحة العمل توجد كتلة إطلاق الحاوية الجديدة. يعرض:
- سيتم تحديد وحدة التخزين المحددة من القائمة أعلاه بالحاوية ، إذا كانت تدعمها
- كلمة المرور التي سيتم تعيينها للتطبيق في الحاوية ، مرة أخرى ، إذا كانت تدعمها
- اختيار صورة الحاوية
- واختيار علامة الصورة
يمكنك اختيار أي صورة Docker رسمية وبعض الصور الإضافية. تم وضع قائمتهم في الملف https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json ووقت النشر هذا:
- jwilder / nginx-proxy - تكوين Nginx تلقائيًا للوصول إلى الحاويات من خلال اسم المجال ، وليس المنفذ
- panubo / vsftpd - خادم FTP
- coderaiser / cloudcmd - واجهة ويب للوصول إلى الملفات
- webdevops / php-apache-dev - إنشاء وحدات Apache + PHP + للتطوير (يعرض الأخطاء)
- webdevops / php-apache - إنشاء وحدات Apache + PHP + من أجل "البيع" (لا تعرض الأخطاء)
- webdevops / php-nginx-dev - إنشاء وحدات Nginx + PHP + للتطوير (يعرض الأخطاء)
- webdevops / php-nginx - إنشاء وحدات Nginx + PHP + من أجل "البيع" (لا تعرض الأخطاء)
ستتجاهل معظم الحاويات محتويات حقل كلمة المرور ، باستثناء تلك المدرجة في docker-profiles.json (قسم المعلمات ):
- panubo / vsftpd - كلمة مرور لاتصال FTP كمسؤول
- coderaiser / cloudcmd - كلمة المرور لتسجيل الدخول كمسؤول
- mysql / mariadb / postgres / influxdb - كلمة المرور للاتصال بقاعدة بيانات db كمسؤول
- rabbitmq / couchdb / orientdb - كلمة مرور للتواصل كمسؤول
ميزات مهمة:
- يتم تحميل العلامات تلقائيًا بعد تحديد الصورة. البحث متاح
- ستكون الحاوية متاحة على المنفذ المشار إليه من قبل مؤلفها. إذا كان المنفذ مشغولاً ، فسيتم تحديد أول منفذ مجاني.
- ستكون الحاوية متاحة على <اسم الحاوية>. <مجال الخادم> إذا كانت هناك إدخالات مقابلة في DNS
- سيتم إنشاء المجلدات للحاوية إذا تم تحديدها من قبل مؤلف الصورة ، أو تم تحديدها في docker-profiles.json ( مجلدات القسم)
تلميحات مفيدة:
- يحتاج jwilder / nginx-proxy إلى البدء أولاً حتى يحتل المنفذ 80
- يجب تشغيل panubo / vsftpd أخيرًا ، لأنه عندما يبدأ ، فإنه يغير أذونات المجلد من أجل الوصول الكامل إليه
- من الأفضل دائمًا استخدام صورة مع علامة
alpine
أو latest-alpine
- فهي تعمل تمامًا مثل الصور العادية ، ولكن يتم تحميلها بسرعة أكبر نظرًا لوزن أقل - إذا كنت بحاجة إلى MySQL - استخدم MariaDB بشكل أفضل ، إلا إذا كنت بالتأكيد غير متأكد من أن MariaDB غير مناسب لك
- إذا قمت بتشغيل شيء باستخدام PHP ، فأنت على الأرجح لا تحتاج إلى
fpm
، لكنك بحاجة إلى apache
معلومات إضافية
بعد النقر على زر RUN
، بمجرد تشغيل الحاوية ، ستظهر نافذة تقرير ، حيث سيتم الإشارة إلى docker run
المكتمل. سوف تخبر الكثير من الأشياء المثيرة للاهتمام حول كيفية ترتيب كل شيء في الواقع.
الوصول إلى اسم المجال
إذا قمت بتشغيل عدة حاويات مع واجهة ويب ، على سبيل المثال ، Wordpress و NextCloud ، وتريد الوصول إليها ليس عن طريق تحديد IP والمنفذ ، ولكن عن طريق اسم المجال ، فأنت بحاجة إلى استيفاء شرطين بسيطين:
- كن أول من يدير jwilder / nginx-proxy
- سجل DNS Wildcard

على سبيل المثال إذا كان لديك ، على سبيل المثال ، النطاق example.com ، فأنت بحاجة إلى إضافة سجل *
نوع A
إليه وتحديد عنوان IP للخادم. في هذه الحالة ، ستكون الحاوية العالمية قيد التشغيل متاحة على http://wordpress.example.com
وإذا لم يكن هناك مجال - ليس مشكلة ، يمكنك استخدام خدمة nip.io - لا تحتاج للتسجيل أو إضافة إدخالات. على سبيل المثال ، إذا كان الخادم الخاص بك يحتوي على IP 172.104.129.183 وكان jwilder / nginx-proxy و nextcloud قيد التشغيل ، فسيكون الأخير متاحًا على http://nextcloud.172.104.129.183.nip.io
تشغيل حاويتين بحجم واحد
غالبًا ما يحدث ، على سبيل المثال ، أن حاوية واحدة تنشر الملفات ( nginx ) ، والثانية يتم تنزيلها ( panubo / vsftpd ). أو الثاني مطلوب لعرض / تنزيل محتويات الأول.
على سبيل المثال ، يسأل Jenkins بعد البدء عن كلمة المرور المسجلة في الملف.

- أطلق جنكينز
jenkins_var_jenkins_home
حجمه jenkins_var_jenkins_home
- حدد كلمة مرور للوصول
- قم بتشغيل coderaiser / cloudcmd
- افتح http: // coderaiser-cloudcmd . <domain> ، أدخل اسم تسجيل دخول
admin
وكلمة المرور من الخطوة 3 - نحن ننظر إلى كلمة المرور من Jenkins


تفاعلات الحاوية
قد تحتاج أيضًا إلى الاتصال بآخر من حاوية واحدة. على سبيل المثال ، سيطلب منك Wordpress أثناء التثبيت تحديد المعلمات للاتصال بقاعدة البيانات: عنوان الخادم ( المضيف ) والمنفذ.
لن يعمل localhost
للتفاعل بين الحاويات.
بشكل عام ، تحتاج إلى تحديد عنوان IP الخارجي للخادم والمنفذ المعروض
قبل السهم ( ->
) في قائمة الحاويات. من أجل البساطة ، تتم إضافة القدرة على تحديد host
الكلمات فقط بدلاً من عنوان IP للخادم
بالإضافة إلى MySQL ، PostgreSQL ، MongoDB ، Redis ، memcached ، Tomcat ، InfluxDB ، CouchDB ، إلخ.
أمثلة على الاستخدام
مشاركة الملفات
- تشغيل nginx: جبال الألب
- أدخل كلمة مرور المسؤول لواجهة الويب
- حدد حجم
nginx_usr_share_nginx_html
- إطلاق coderaiser / cloudcmd: أحدث جبال الألب
يمكنك الآن الانتقال إلى http: // <server address>: 8000 لتنزيل الملفات بتفويض ، وستكون الروابط المباشرة متاحة من خلال http: // <server address> . ما عليك سوى تحديد المسار الكامل للملف.
وورد
- اخترعنا وأدخل كلمة مرور لقاعدة البيانات
- انطلاق Mariadb
- تشغيل وورد: اباتشي
- ننتقل إلى العنوان http: // <server address> ، ونبدأ التثبيت ونحدد معلمات الاتصال بنظام DBMS:
- اسم قاعدة البيانات:
db
- اسم المستخدم:
admin
- كلمة المرور - تلك التي تم إدخالها في الفقرة 1
- خادم قاعدة البيانات:
host
- بادئة الجدول - أي
مصباح
- اخترعنا وأدخل كلمة مرور لقاعدة البيانات
- انطلاق Mariadb
- قم بتشغيل webdevops / php-apache-dev: alpine
- حدد المجلد
webdevops-php-apache-dev_app
- اخترعنا وأدخل كلمة المرور لخادم FTP
- قم بتشغيل panubo / vsftpd
يمكنك الآن تحميل ملفات .php
إلى ftp: // <server address> وتشغيلها بالانتقال إلى العنوان http: // <server address>
ملاحظة
لا تتوفر جميع الحاويات في التطبيق ، ولا تعمل بعض الحاويات المتاحة بدون إعدادات إضافية - قم بتحرير الملف على GitHub وإرسال طلبات السحب الخاصة بك. إذا كنت لا تعرف كيف - افتح المسألة . هذا سيساعدك على تطوير المشروع.
توجد طرق أخرى لدعم المشروع ، بالإضافة إلى الكثير من المعلومات المفيدة ، في ملف README .