اتصال دامنه به داکرها و کنترل منابع

سلام دوستان
من تازه دارم با داکر کار میکنم
در این مدت تونستم یک شبکه به همراه چند داکر متصل به اون که میتونند دیتا بین هم نبادلکنند ایجاد کنم.
چند سوال دارم که ممنون میشم با پاسخش بهم کمک کمید:
1- من سرورم ویندوزه، روی سرور ویندوز که با ماشین مجازی esxi ایجاد شذه نتونستم داکر دسکتاپ نصب کنم و تمام این فعالیت ها رو روی ویندوز شخصی اتجامدادم،ایا چون روی سرور ویدنوز2019 بود نتونستم داکر دکستاث نصب کنم یا سرورم واسه نصبش اماده نبود، بعد اجرا میزد که باید حالت v hyper فعال بشه ولی هر کاری کردم نتونستم روی ویندوز سرور فعالش کنم ولی روی ویندوز 11 راحت فعال شد!
2-من اومدم سه تا داکر nodejs و php-apache و mysql ایجاد کردم و با ای پی خودم وشماره پورت میتونم دیتا رد و بدل کنم.
ممنون میشم راهنمایی کنید که چطور دامنه به میکرو سرویسام وصل کنم یا بتونم داخل میکرو سرویسام ساب دامین هم داشته باشم، ایا میتونم روی داکر php-apache حالت directadmin داشته باشم طوری که راحت داخلش ساب دامین و دامنه ثبت کنم ؟
میدونم که باید یک میکرو سرویس دیکه با nginx ایجاد کنم و به شبکه وصلش کنم و از اون درخواست ها رو بفرستم
ولی طریقه انجام رو نمیدونم !
ممنون میشم راهنماییم کنید و اینکه ایامیشه شبیه دایرکت ادمین یا cpanel از میکرو سرویسام استفاده کرد و راحت براشون دامنه و ساب دامنه نصب کنم ؟
3- ایا میتونم حالت wildtaget رو براشون فعال کنم ؟
4- ایا میتونم حجم نامحدود به میکرو سرویسام بدم ؟ مثلا فایل یکی از هاستام 40 گیگ هست!
5- ایا میتونم به mysql حجم نامحدود بدم ، مثلا حجم دیتاش 1 گیگ هست؟
6- ایا داکر دسکتاپ برای کنترل بار روی داکر ها کافیه چون دیدم که مثلا میزنه رم 3 گیگ و هر ایمیل چقدر از رم وcpu استفاده میکنه ؟
7-ایا میتونم رم و cpu که به ایمیج ها میده رو کنترل و شخصی سازی کنم ؟
پیشاپیش از کمکتون متشکرم

به جمع ما خوش اومدید.

این یه چیزیه که توی BIOS باید فعال بشه. اگه فعال نیست، نمیتونید کاریش کنید. (شما دارید یه ماشین مجازی (داکر) داخل یه ماشین مجازی دیگه (یکذل) اجرا میکنید. همچین کاری ممکن نیست.)

شما باید یه وبسرور روی سیستم‌عامل اصلی (ویندوز سرور)‌ نصب کنید و توش کانفیگ کنید که ریکوئستهای فلان دامنه رو بفرسته به فلان پورت (پورتی که اون داکر روش ران شده). به این میگن Reverse Proxy
حالا من نمیدونم IIS این قابلیت رو داره که Reverse Proxy بشه یا خیر.
ساب دامین هم به همین صورت. باید اون reverse proxy شما، ساب دامین ها رو ریدایرکت کنه.

اینم میشه. به جای IIS

خیر. مگر اینکه یه برنامه بنویسید که این میکروسرویسها رو مدیریت کنه. رسما direct-admin خودتون رو بسازید.

نمیدونم چیه ولی اسمش شبیه wildcard هست. پس احتمالا میشه.

اصولا نباید محدودیتی وجود داشته باشه. بجز اینکه اصلا نمیشه داکر ران کرد روی اون سیستم.

بله. ولی حجم همش ۱ گیگ هست یا هرکدوم از دیتاهایی که توی هرکدوم از خونه‌های sql نوشته میشه ۱گیگ هست؟ اگه اینطوره باید یه فکر اساسی برای معماری پروژتون انجام بدید و دیتای عظیم رو روی هارد بریزید و آدرسش رو توی دیتابیس نگه دارید.

تا حالا با داکر دسکتاپ کار نکردم ولی چیزی غیر از یه نرم‌افزار برای مدیریت کردن کانتینرها نیست. پس نباید محدودیتی داشته باشه.

مثل اینکه میشه:

1 پسندیده

سلام سپاس بابت پاسخ جامعتون که پاسخ بیشتر سوالاتم رو در بر گرفت، چند مورد دیگم سؤال هست که هنوز واسم مبهم هست:
1-یعنی پس نمیتونم روی سرور ویندوزی که روی ماشین مجازی esxi نصب شده، داکر نصب کنم ؟ روی کانفیگ ماشین مجازی Esxi 6.5 این کانفیگ رو ندیدم !
2-برای میکرو سرویس nginx میتونید راهنماییم کنید، داخل اینترنت یک سری راهنما دیدم ولی نتونستم انجام بدم، میتونید بی زحمت برای این مورد بیشتر راهنماییم کنید.

یعنی کسی که به شما VPS میده، دلش نمیخواد شما داخلش چندتا VPS بزنید. پس این قابلیت رو غیرفعال میکنه که ازش چندتا VPS بخرید.
البته اینطور که به نظر میرسه شما خودتون مجازی‌سازی رو انجام دادید. در این صورت هم نمیدونم چطوری میشه این قابلیت رو فعال کرد و اصلا میشه یا خیر.
اینطور که اینجا میبینم، امکانش هست ولی مثل اینکه سختتره. پیشنهاد میکنن (و میکنم) که اینکارها رو داخل VPS‌لینوکسی انجام بدید. البته وقتی داخل VPS لینوکسی باشید دیگه نیازی به اینهمه داکر-بازی وجود نداره. همه‌ی این برنامه‌ها مستقیم روش نصب میشن.

کاری که شما الآن انجام میدید، الکی داره قضیه رو پیچیده میکنه، همه‌ی این چیزایی که یکی یکی توی یه کانتینر داکر جداگانه قرار دادید و با بربختی از طریق یه پورت به هم متصل میکنید، میتونن کنار هم روی یه ماشین لینوکسی قرار بگیرن. اینطوری کار کردن باهاشون خیلی راحتتر میشه.

این دوتا لینک رو نگاه کنید:

اساسا یه همچین چیزی باید کار شما رو راه بندازه:

server {
    listen      80;
    server_name example.org www.example.org;
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

اینجا 127.0.0.1:8080 پورت local اون سرویسی هست که قراره دیتا رو سرو کنه (پورتی که داکر ارائه میده بهمون) و servername هم اسم دامنه‌ای که میخوایم بهش بفرستیم.


بجز اینها، مساله‌ی DNS هم به وجود میاد. باید یه چیزی مثلا bind9 داشته باشید و کانفیگش کنید که بدونه فلان دامنه، باید به همین سرور اشاره کنه. و به پورت ۵۳ وصل باشه که کامپیوتر مردم، بتونن باهاش صحبت کنن و ببینن این دامنه کجاست.
از اونطرف هم توی کنترل پنل دامنه‌ی خودتون باید ست کنید که به IP سرور شما اشاره کنه. اگه .ir هست، توی nic.ir و اگه چیز دیگری هست، باید از اون شرکتی که دامنه رو ازش خریدید بخواید بره اینو براتون ست کنه.

البته یه راه دیگش هم ساختن یه اکانت توی cloudflare.com و اضافه کردن دامنه به اون هست. اینطوری فقط کافیه dnsهایی که cloudflare بهتون ارائه میده رو روی دامنه ست کنید. بعد از داخل کنترل پنل cloudflare هروقت که بخواید دامنه رو هرجایی که بخواید میفرستید. ویژگیهای دیگه‌ای هم داره مثلا SSL رایگان.

1 پسندیده

همین پیچیدگیها باعث میشه اکثرا برن سراغ سرویسهایی مثل fandogh.cloud و مدیریت همه‌چیز رو بسپارن به اون و خودشون فقط یه docker image بسازن و بندازن روش.
ولی لذتی که توی کانفیگ سرور هست، کمتر جایی پیدا میشه :heart_eyes:

1 پسندیده

سپاس ار پاسختان
بله سرورهای خودم هست
سمت سرور ویندوز رفتم چون یکی از وب سرویسام که پایتون هست تنها روی سرور ویندوز قابل دسترسی هست.
فرمودید سرور لینوکس ایا میتونم از ابتونتو استفاده کنم و روش داکر دسکتاپ نصب کنم ؟
ممنون میشم راهنمایی کنید که چطور این موارد رو سرور لینوکسی انجام بدم، ایا داکرهام باید تغییر کنند ؟

پایتون پدر آدمو درمیاره روی ویندوز. مطمئنید که رو لینوکس ران نمیشه؟ خیلی عجیبه.

خیر. داکر دسکتاپ فقط برای ویندوز و مک هست. لینوکسیها از ترمینال نمیترسن و با commandline کار میکنن.
درضمن لینوکسیها اصلا محیط گرافیکی دسکتاپ روی سرورشون نصب نمیکنن. چه کاریه الکی میخواد RAM و CPU اشغال کنه؟!

تو لینوکس کلا داکر نمیخواید برای همچین پروژه‌ای. همه‌ی چیزهایی که تک تک توی کانتینرهای مختلف ستاپ کردید رو مستقیم رو همون لینوکس، اجرا و کانفیگ میکنید و مستقیم با همدیگه در ارتباط هستن. اینهمه بازکردن پورت و وصل کردن تکه‌های پازل هم نداره.

روی لینوکستون nginx و php‌ و mysql (درحقیقت mariadb) نصب میکنید. اینا مستقیم میتونن به پورتهای همدیگه وصل بشن.

1 پسندیده

سرور پایتونی داستان داشت روی لینوکسی جواب نداد و داستان داشت
قبول دارم که سرور لینوکسی راحت تره و نیاز به داکر نداره ولی داکر رو بیشتر واسه مدیرت منابع میزارم تا بتونم میکرو سرویس هام رو کنترل کنم
روی لینوکس میشه چنین کاری کرد ایا شبیه ویندوز هست ؟
مثلا برای هر ساب دامنه باید ادرس و ای پیش رو وارد کرد؟
سپس از راهنمایتون بیشتر موارد انجام شد.

وقتی شما با داکر کار میکنید، رسما دارید با لینوکس کار میکنید. تمام چیزهایی که توضیح دادم، روی لینوکس کار میکنه و نرمال به حساب میاد.

برای هر دامنه، شما باید توی پنل دامنه، اونو بفرستید به IP سرورتون.
بعد روی سرور، توی Bind9 ست کنید که این دامنه و این A record ها (برای ست کردن ساب-دامین به کار میره) قراره به همین سرور اشاره کنن و جای دیگه‌ای نمیرن.
بعد وقتی کاربر، ریکوئست میزنه، بروزرش میاد به Bind9 سرور شما پیام میده که «فلان دامنه رو میخوام» و Bind9 بهش میگه «همینجاست». این طرز کار DNS هست. همه‌جا همینه.

بعدش توی Nginx ست میکنید که «اگه یه ریکوئست اومد که فلان domain‌ یا فلان subdomain یا حتی domain.com/some-directory رو خواست، باهاش چیکار کنه.
مثلا میتونید بگید به این دامنه ریکوئست اومد، پراکسی کن به localhost:8080 که سرور من داره اونجا کار میکنه (ریکوئست هرچی بود، صاف بفرست اونجا. انگار اصلا nginx وجود نداره این وسط). بعد اگه فایلهای استاتیک رو کاربر خواست، مثلا domain.com/images اینو مستقیم خودت برو از فلان دایرکتوری بخون بفرست به کاربر (اینطوری فشاری که به نرم‌افزارمون میاد کمتر میشه و ریکوئستهای استاتیک، همون اول از طرف nginx هندل میشن)
کارهای دیگه‌ای هم میشه کرد وقتی nginx به عنوان پراکسی ست میشه. مثلا دستکاری headerها یا ست کردن SSL

1 پسندیده