IIS یا Internet Information Services یک وب سرور قدرتمند و محبوب است که توسط مایکروسافت توسعه داده شده و عمدتاً روی سیستمعاملهای ویندوز اجرا میشود. این سرویس برای میزبانی وبسایتها، برنامههای تحت وب و خدمات وب مختلف استفاده میشود. IIS امکان اجرای وب اپلیکیشنهایی که با زبانهای برنامهنویسی مانند ASP.NET، PHP و پایتون توسعه یافتهاند را فراهم میکند. IIS با پشتیبانی از پروتکلهای مختلفی مانند HTTP، HTTPS، FTP و SMTP، یک پلتفرم جامع برای توسعه و مدیریت وبسایتها و سرویسهای تحت وب به شمار میرود.
داکر Docker نیز یک پلتفرم متنباز است که برای ایجاد، توسعه و اجرای اپلیکیشنها در قالب کانتینر و بصورت ایزوله، استفاده میشود. نصب و ترکیب IIS روی داکر به شما این امکان را میدهد تا وبسرورهای خود را به صورت ایزوله و قابل حمل اجرا کنید. این کار باعث افزایش انعطافپذیری، مدیریت سادهتر و کاهش وابستگی به سیستم عامل میزبان میشود. در ادامه، مراحل نصب IIS روی داکر در ویندوز سرور را به صورت گام به گام توضیح میدهیم.
داکر Docker چیست و چه کاربردهایی دارد؟
پیشنیازها
از آنجا که ISS یک برنامه اختصاصی برای ویندوز سرور است، بنابراین ترکیب ISS با Docker را حتماً باید در ویندوز سرور انجام داد. البته ویندوز سرور بصورت پیشفرض دارای ISS هست،
-
ویندوز سرور: اطمینان حاصل کنید که سیستم شما دارای ویندوز سرور با نسخه مناسب برای اجرای داکر است.
-
داکر دسکتاپ: داکر دسکتاپ را دانلود و نصب کنید.
-
Dockerfile: یک فایل Dockerfile ایجاد کنید که دستورات لازم برای ساخت تصویر داکر را مشخص میکند.
دستورات پیشرفته داکر/ آشنایی با دستورات مهم Docker
مراحل نصب IIS روی داکر
بهتر است قبل از شروع کار با دستورات داکر آشنایی داشته باشید تا انجام این مراحل برای شما آسان باشد.
ایجاد Dockerfile
یک فایل متنی با نام Dockerfile در دایرکتوری پروژه خود ایجاد کنید. در این فایل، دستورات زیر را وارد کنید:
FROM microsoft/iis:latest
نصب کامپوننت های مورد نیاز IIS
RUN powershell -Command "& {Install-WindowsFeature Web-Server}"
کپی کردن فایل های وب سایت به دایرکتوری IIS
COPY . c:\inetpub\wwwroot
تنظیمات اولیه IIS (اختیاری)
اگر قبلاً با ISS کار کردهاید و تنظیمات خاصی را برای آن اعمال میکنید، در این مرحله میتوانید تنظیمات و پیکربندی مورد نظر خود را انجامدهید. برای مثال، فعال کردن SSL یا تنظیمات مجوز.
ساخت Image داکر
در ترمینال یا خط فرمان، به دایرکتوری حاوی فایل Dockerfile بروید و دستور زیر را اجرا کنید:
docker build -t my-iis-image .
در این دستور، my-iis-image نامی است که برای تصویر داکر خود انتخاب میکنید.
اجرای کانتینر
برای اجرای کانتینر، دستور زیر را اجرا کنید:
docker run -d -p 80:80 my-iis-image
در این دستور
-d: کانتینر را در پسزمینه اجرا میکند.
-p 80:80: پورت 80 روی میزبان را به پورت 80 داخل کانتینر نگاشت میکند.
تفسیر دستورات Dockerfile
-
FROM microsoft/iis:latest: از تصویر پایه IIS مایکروسافت استفاده میکند.
-
RUN powershell -Command "& {Install-WindowsFeature Web-Server}": ویژگی وب سرور را در ویندوز نصب میکند.
-
COPY . c:\inetpub\wwwroot: فایلهای موجود در دایرکتوری فعلی را به دایرکتوری ریشه وبسایت در IIS کپی میکند.
نکات مهم
-
تخصیص منابع: میتوانید با استفاده از گزینههای -m و --cpus در دستور docker run، میزان حافظه و تعداد پردازندههای اختصاص داده شده به کانتینر را تنظیم کنید.
-
تنظیمات پیشرفته: برای تنظیمات پیشرفتهتر IIS، میتوانید از PowerShell کامندلتهای IIS را در داخل Dockerfile استفاده کنید.
-
امنیت: اطمینان حاصل کنید که از آخرین نسخههای داکر و IIS استفاده میکنید و بهروزرسانیهای امنیتی را به طور مرتب اعمال میکنید.
تفاوت داکر با ماشین مجازی چیست؟
مزایای استفاده از داکر برای IIS
-
ایزوله شدن محیط: هر وبسایت در یک کانتینر جداگانه اجرا میشود و از دیگر وبسایتها جدا میشود.
-
قابلیت حمل: میتوانید کانتینرهای IIS را به راحتی بین محیطهای مختلف منتقل کنید.
-
مدیریت آسان: با استفاده از ابزارهای داکر، میتوانید به راحتی کانتینرهای خود را مدیریت کنید.
-
تکرارپذیری: با تعریف یک Dockerfile، میتوانید به راحتی محیطهای IIS یکسانی را ایجاد کنید.
راه اندازی همزمان چندین وبسرور
استفاده از داکر به عنوان یک بستر ایزوله، میتواند کمک کند تا بتوانیم همزمان از چندین وبسرور در پورتهای جداگانه بر روی یک سرور واحد بهرهمند شویم. این وبسرورها هر کدام میتوانند برای اجرای یک نوع خاص از کدها استفاده شوند؛ برای مثال استفاده IIS در کنار Nginx میتواند کمک کند تا بتوانیم بطور همزمان از کدهای PHP و Dot Net بهرمند شویم. از طرفی کانتینر سازی وبسرور بهمراه کل پروژه وب اپلیکیشن، میتواند امر پشتیبان گیری و انتقال آن را به سرور دیگر آسانتر کند. از مزایای کانتینر کردن وبسرویسها میتوان به ایزولاسیون، انعطافپذیری، مدیریت آسان، تکرارپذیری و استفاده بهینه از منابع یاد کرد. برای این منظور مراحل زیر را دنبال کنید:
-
ایجاد Dockerfile برای هر وبسرور: برای هر وبسرور (IIS و Nginx) یک Dockerfile ایجاد کنید. در این فایل، دستورات نصب و پیکربندی وبسرور مربوطه را مشخص میکنید.
-
ساخت تصاویر داکر: برای هر Dockerfile، یک تصویر داکر بسازید.
-
اجرای کانتینرها: با استفاده از دستور docker run، هر دو تصویر را به صورت همزمان اجرا کنید و پورتهای مناسب را به آنها نگاشت کنید.
# برای IISdocker run -d -p 80:80 my-iis-image
# برای Nginxdocker run -d -p 8080:80 my-nginx-image
در این مثال، IIS روی پورت 80 و Nginx روی پورت 8080 قابل دسترسی خواهد بود.
نکات مهم:
-
پورتها: اطمینان حاصل کنید که پورتهای نگاشت شده به کانتینرها با هم تداخل نداشته باشند.
-
حجمها: برای ذخیره دادههای وبسایتها، میتوانید از حجمهای داکر استفاده کنید.
-
شبکه: اگر میخواهید کانتینرها با هم ارتباط برقرار کنند، میتوانید از شبکههای داکر استفاده کنید.
-
امنیت: برای امنیت بیشتر، میتوانید از کانتینرهای چند مرحلهای و اسکن آسیبپذیری استفاده کنید.
سخن پایانی
با استفاده از داکر، میتوانید به راحتی چندین وبسرور را در یک سیستم اجرا کنید و از مزایای آن بهرهمند شوید. این روش برای محیطهای توسعه و تست پروژههای سنگین و چندگانه مناسب است. تا قبل از داکر ماشینهای مجازی منابع سرور را مصرف میکردند و سرور نمیتوانست پتانسیل خوبی از خود نشان دهد. اما داکر بازی را تغییر داد و اجرای بهینه وبسرور و اپلیکیشنهای تحت وب، توانست منابع سرور را بدرستی بین برنامهها تقسیم کند. در بدترین حالت سرعت داکر دو برابر یک ماشین مجازی است و میتوان به جای استفاده از دو ماشین مجازی از 4 کانتینر داکر استفاده کرد. داکر جلوی اجرای سرویسهای اضافی در ماشین مجازی را میگیرد و با این کار در مصرف منابع سرور بشدت صرفه جویی میکند. از بخواهیم منصفانه نگاه کنیم، داکر میتواند تا 4 برابر یک ماشین مجازی، سرعت را در سرور افزایش دهد.