اجرا و ساخت چندین نرم‌افزار روی یک سیستم‌عامل
داکر؛ نهنگی‌ که به برنامه‌سازی سرعت می‌دهد!
فرض کنید در کامپیوتر خود، سه برنامه مختلف دارید. هرکدام از این برنامه‌ها برای اجرا شدن نیاز به «Ruby on Rails» دارند. Ruby on Rails، فریم‌ورکی برای طراحی، توسعه و نگهداری نرم‌افزارهای تحت وب است. برنامه شماره یک فقط بر روی Ruby on Rails نسخه یک، برنامه شماره دو فقط بر روی Ruby on Rails نسخه دو و برنامه شماره سه فقط بر روی Ruby on Rails نسخه سه اجرا می‌شود. راه حل قدیمی برای اجرای این سه برنامه، ساخت سه ماشین مجازی یا اختصاص سه کامپیوتر مجزا برای اجرای هرکدام از این نرم‌افزارها است که منابع پردازشی، زمان و هزینه زیادی را دربرمی‌گیرد.

داکر (Docker) راه حل این مشکل است و اجازه می‌دهد برنامه‌های مختلف با پیش‌نیازها و کتابخانه‌های مختلف را به‌راحتی تنها بر روی یک سیستم‌عامل اجرا کنید. به کمک داکر می‌توانید بازه زمانی ساخت برنامه تا تست آن را کاهش دهید و برنامه‌های بیشتری تولید کنید.
سلیمان هایکس، پروژه داکر را در فرانسه و در شرکت «dotCloud» آغاز کرد. شرکت dotCloud بر محصولاتی که بر پایه ساختار «پلتفرم به عنوان سرویس» هستند، تمرکز می‌کند. داکر نقطه عطف فعالیت این شرکت است و به دلیل این پلتفرم، شرکت dotCloud شهرت یافت. اولین نسخه داکر، نسخه 0.1.0 است که در تاریخ 23 مارس 2013 (سوم فروردین 1392) عرضه عمومی شد.
داکر، پلتفرم متن‌بازی است که یک نرم‌افزار را به همراه تمامی اجزای مورد نیاز برای اجرای آن، همچون کد برنامه، runtime، ابزارهای سیستم، کتابخانه‌های سیستم و سایر موارد ضروری، داخل یک کانتینر قرار می‌دهد. وظیفه این کانتینرها نگهداری این اجزا است که با این کار باعث می‌شود فارغ از نوع محیط اجرا، این برنامه‌ها به‌خوبی اجرا شوند. در مثالی که ابتدا به آن اشاره شد، با استفاده از کانتینرهای داکر می‌توانید هر سه برنامه را بدون مشکل روی یک سیستم اجرا کنید. با استفاده از این روش، داکر کمک می‌کند تا تست و پیاده‌سازی برنامه‌ها را سریع‌تر کنید و با کوتاه کردن چرخه کدنویسی تا اجرای یک برنامه، زمان بیشتری به دست آورید.

مطلب پیشنهادی

نه فرمان خطرناک لینوکس که هرگز نباید اجرا شوند!

هرکدام از این کانتینرها کاملاً جدا از یکدیگر اجرا می‌شوند. نکته حائز اهمیت، حجم این کانتینرها و منابع مورد نیاز برای اجرای آن‌ها است. با وجود اینکه قسمتی از کرنل‌های مورد نیاز در کانتینرها قرار می‌گیرند، انتظار می‌رود اجرای این کانتینرها باعث استفاده زیاد از منابع سیستم بشود؛ اما کانتینرهای داکر در مقایسه با ماشین مجازی، منابع کمتری برای نصب پیش‌نیازهای برنامه و اجرای آن نیاز خواهند داشت. با این راه حل، در منابع خود صرفه‌جویی خواهید کرد و در یک شبکه با مقیاس بزرگ، از هدررفت میزان قابل توجهی از منابع جلوگیری می‌شود.
ممکن است از خود بپرسید که آیا میزان این صرفه‌جویی می‌تواند چشمگیر باشد؟ در پاسخ به این سؤال باید گفت که استفاده از کانتینرها به قدری باعث صرفه‌جویی در زمان و منابع سخت‌افزاری می‌شود که در ویندوز سرور 2016، کانتینرها به Feature تبدیل شده‌اند. شکل یک که از سومین پیش‌نمایش ویندوز سرور 2016 تهیه شده است، پشتیبانی از کانتینرها را تأیید می‌کند. مایکروسافت اعلام کرده است که علاوه بر یکپارچه‌سازی کانتینرها در ویندوز سرور، امکان استفاده از آن‌ها در Azure نیز فراهم شده است.


  شکل 1: پشتیبانی از کانتینرها در ویندوز سرور 2016

1- اجزای داکر
داکر یک موتور (Engine) دارد. ارتباط با موتور داکر به صورت کلاینت‌سرور بوده و از سه بخش اصلی تشکیل شده است:
- سروری که برنامه‌ای به نام دایمون (Deamon) را اجرا می‌کند و این برنامه برای اجرای طولانی بهینه شده است.
- REST API که برنامه رابط است و برای ارتباط با دایمون استفاده می‌شود.
- یک رابط خط فرمان مانند Power Shell ویندوز یا Bash لینوکس برای کاربران
با استفاده از رابط خط فرمان، فرمان‌های کاربر به سمت دایمون فرستاده می‌شود و دستوراتی که از کاربر گرفته شده است، اجرا می‌شود. این رابط قابلیت اجرای اسکریپت‌ها را نیز دارد. شکل 2، بخش‌های اصلی داکر را نمایش می‌دهد. در شکل سه نیز ساختار داکر و نحوه عملکرد آن دقیق‌تر بررسی شده است.


  شکل 2: بخش‌های اصلی داکر

بر اساس شکل 3، ساختار داکر شامل این قسمت‌ها است:
- دایمون: قسمت اصلی داکر است که بر روی سرور نصب می‌شود و عملیات مدیریت کانتینرها و imageها را بر عهده دارد. کاربران مستقیماً با دایمون در ارتباط نخواهند بود و برای اجرای دستوراتشان باید به رابط خط فرمان مراجعه کنند.
- کلاینت: تنها اینترفیس برقراری ارتباط با دایمون است که دستورات را از کاربر می‌گیرد و پاسخ دایمون را نمایش می‌دهد.
-Image: Imageهای داکر یک قالب است. برای مثال، یک قالب می‌تواند سیستم‌عامل اوبونتو به همراه آپاچی و مروگر مورد علاقه شما را شامل شود. از imageها برای ساخت کانتینرهای داکر استفاده می‌شود. ساخت imageها یا به‌روزرسانی آن‌ها به وسیله داکر کار ساده‌ای است. در صورت تمایل می‌توانید imageهایی را که افراد دیگر ساخته‌اند نیز از اینترنت دانلود کنید.
- رجیستر: مسئولیت نگهداری از imageها و مدیریت آن‌ها بر عهده رجیستر است. ذخیره‌سازی imageها می‌تواند به صورت خصوصی یا عمومی باشد. منظور از ذخیره‌سازی عمومی، Docker Hub است. Docker Hub شامل imageهای بسیار مفید می‌شود. از جمله این imageها می‌توان به Nginx، Busybox، اوبونتو، Redis و Swarm اشاره کرد. مواردی که نام برده شد، هرکدام بیش از 10 میلیون بار درخواست شده‌اند. برای دسترسی به آن‌ها، به این آدرس و به قسمت Explore مراجعه کرده و توضیحات تکمیلی و نحوه نصب آن‌ها را مطالعه کنید.
- کانتینرها: قسمت اصلی نوآوری هستند. این کانتینرها تمام مواردی را که برای اجرای برنامه مورد نیاز است، در خود نگه می‌دارند. هر کانتینر از یک image ساخته می‌شود. کانتینرهای داکر می‌توانند اجرا، شروع، متوقف، جابه‌جا و حتی حذف شوند. هرکدام از کانتینرها از یکدیگر جدا هستند و محیط امنی را برای اجرای برنامه فراهم می‌کنند.


  شکل 3: ساختار داکر و اجزای آن

2. Namespaceها
داکر از تکنولوژی‌ای به نام namespace بهره می‌برد که از آن برای جداسازی کانتینرها استفاده می‌شود. هنگامی که یک کانتینر را اجرا می‌کنید، داکر مجموعه‌ای از namespace برای آن کانتینر می‌سازد. این کار باعث می‌شود هر کانتینر namespace مخصوص‌به‌خود را داشته باشد تا کانتینرها از یکدیگر جدا شوند. برخی از namespaceهایی که موتور داکر در لینوکس استفاده می‌کند، 
به این شرح است:
- pid: معرف شناسه‌های هر پردازش است.
- net: برای مدیریت رابط‌های شبکه استفاده می‌شود.
- ipc: مخفف InterProcess Communication و برای دسترسی به منابع IPC است.
- mnt: برای مدیریت mount-pointها به کار می‌رود.
- uts: مخفف Unix Timesharing System است و کرنل‌ها و نسخه‌های آن‌ها را از یکدیگر جدا می‌کند.

3. نصب داکر و اجرای چند دستور
با توجه به اهمیت داکر و رشد سریع آن، قصد داریم نحوه نصب آن و اجرای سناریو کوچکی را آموزش دهیم. این آموزش بر اساس ویندوز 8.1 نسخه 64 بیتی است. برای استفاده از داکر باید از ویندوز 64 بیتی استفاده کنید.
1. برای نصب داکر قابلیت مجازی‌سازی سیستم باید حتماً روشن باشد. برای روشن کردن این قابلیت باید از طریق بایوس سیستم، این ویژگی را فعال کنید. نحوه فعال‌سازی آن، بسته به شرکت سازنده سخت‌افزار متفاوت است.
2. اگر از ویندوز 10 نسخه‌های Enterprise و Education استفاده می‌کنید، با مراجعه به این سایت آخرین نسخه فایل نصبی داکر با نام installDocker.msi را دانلود و نصب کنید. برای نصب داکر بر روی ویندوز 8.1، با مراجعه به تاریخچه فایل‌های نصب داکر، برنامه Docker Toolbox را دانلود و نصب کنید.
3. بعد از دانلود Toolbox، برای نصب آن اقدام کنید. مراحل نصب آن بسیار ساده است و به تغییر موارد پیش‌فرض نیازی نیست.
4. پس از اتمام نصب داکر، دو میان‌بر (shortcut) با نام‌های (Kitematic (Alpha و Docker Quickstart Terminal به صفحه دسکتاپ اضافه می‌شوند. Quickstart Terminal همان رابط خط فرمان برای ارتباط با دایمون داکر است.
5. برای اطمینان از نصب صحیح داکر، Quickstart Terminal را باز کرده و در آن کد شماره یک را تایپ کنید.

docker run hello-world
کد 1. فرمانی ساده برای اطمینان از نصب صحیح داکر

شکل 4، محل نوشتار کد و نتیجه آن را نمایش می‌دهد. این کد یک کانتینر تست را از سایت داکر دانلود و اجرا می‌کند.


  شکل 4. نمایی از رابط خط فرمان و نتیجه اولین دستور

برای دسترسی به محیط Bash لینوکس و اجرای دستورات آن، می‌توانید از کد شماره دو استفاده کنید.

docker run -it ubuntu bash
کد 2. نصب کانتینر مربوطه برای اجرای دستورات Bash

4. نصب وردپرس به کمک داکر
پس از نصب داکر و اجرای چند دستور ساده، برای آشنایی بیشتر با نحوه علمکرد آن و مفهوم کانتینر، قصد داریم نصب سیستم مدیریت محتوای محبوب وردپرس را آموزش دهیم. از وردپرس برای ایجاد و مدیریت وب‌سایت، به‌خصوص وب‌سایت‌های خبری استفاده می‌شود. اگر تجربه کار با این سیستم مدیریت محتوا به صورت محلی را داشته باشید، قطعاً می‌دانید که در قدم اول باید یکی از دو برنامه Wamp یا Xampp را نصب کنید. پس از نصب آن‌ها، اقدام به ساخت دیتابیس کنید. سپس وردپرس را دانلود کرده و از حالت فشرده خارج کنید. محتویات وردپرس را در پوشه مربوطه بریزید و برای تنظیمات اولیه وردپرس اقدام کنید. انجام این عملیات برای بار اول، در صورتی که اشتباهی رخ ندهد، حدوداً 20 دقیقه به طول خواهد انجامید. حال فرایند نصب آن توسط داکر را دنبال کرده و زمان و پیچیدگی آن را مقایسه کنید:
1. برای اجرای وردپرس به یک دیتابیس نیاز دارید. دیتابیس مورد استفاده، MySQL است. پس از اجرای ترمینال داکر، کد شماره سه را در آن وارد کنید.

docker run --name some-mysql -e 
MYSQL_ROOT_PASSWORD=my-secret-pw -d 
mysql:latest

کد 3. نصب و اجرای کانتینر MySQL

این کد در این سایت موجود است. با اجرای این کد کانتینر مربوط به دیتابیس دانلود و اجرا می‌شود. در کد شماره سه، عبارت some-mysql نام کانتینری است که به کانتینر MySQL می‌دهید. این نام می‌تواند یک نام دلخواه باشد. عبارت my-secret-pw رمز عبور برای کاربر root و عبارت latest در انتهای کد بیانگر آخرین نسخه MyQSL است. در صورتی که تمایل دارید نسخه خاصی از دیتابیس را نصب کنید، شماره نسخه مدنظر را وارد کنید. پس از کمی انتظار، کانتینر مربوطه دانلود و اجرا می‌شود. برای اطمینان از اجرای کانتینرها می‌توانید از دستور docker ps –a استفاده کنید.
2. پس از دیتابیس، باید کانتینر مربوط به وردپرس دانلود و اجرا شود. برای نصب و اجرای آن، کد شماره چهار را وارد کنید.

docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress:latest
کد 4. نصب و اجرای کانتینر وردپرس

در کد شماره چهار، همانند کد شماره سه، عبارت some-wordpress، نام دلخواهی برای کانتینر است و می‌توانید مقدار آن را تغییر دهید. با عبارت link some-mysql:mysql-- لینکی بین کانتینر دیتابیس و کانتینر وردپرس ایجاد می‌کنید. اگر در مرحله پیش، نام کانتینر some-mysql را تغییر داده‌اید، در این قسمت باید نام مربوطه را وارد کنید. از p 8080:80- برای ارسال کردن پورت استفاده می‌شود. در صورتی که این عبارت را وارد کنید، برای اتصال به وردپرس حتماً باید پورت 8080 را پس از وارد کردن آدرس آی‌پی ماشین داکر وارد کنید. وارد کردن این عبارت الزامی نیست. wordpress:latest آخرین نسخه کانتینر وردپرس را دانلود و اجرا می‌کند. همانند کد شماره سه می‌توانید شماره نسخه دلخواه خود را وارد کنید.
3. به همین سادگی وب‌سایت محلی وردپرس شما آماده شده است. برای ورود به وردپرس باید آدرس آی‌پی ماشین مجازی داکر را وارد کرده و برای به دست آوردن آدرس آی‌پی، دستور docker-machine ls را وارد کنید. پس از وارد کردن این دستور، خروجی آن به صورت شکل 5 خواهد بود. در پایین قسمت URL، آدرس آی‌پی ماشین مجازی نمایش داده خواهد شد. این آدرس آی‌پی در شکل پنج در کادر مستطیلی قرمزرنگ مشخص شده است. در این سناریو آدرس آی‌پی ماشین مجازی ما 192.168.99.100 است.


  شکل 5. نحوه نمایش آی‌پی آدرس ماشین مجازی داکر

حال، مرورگر خود را باز کرده و آدرس آی‌پی ماشین مجازی به همراه پورت 8080 را در آن وارد کنید. (در این سناریو به صورت 192.168.99.100:8080 است.) با وارد کردن این آدرس، همانند شکل 6، صفحه نصب وردپرس نمایان می‌شود و با وارد کردن نام کاربری، عنوان سایت و آدرس ایمیل، به‌راحتی سایت وردپرس شما ساخته می‌شود. دستوراتی که در اینجا به آن‌ها اشاره شد، بسیار اندک و صرفاً به‌منظور آشنایی با اجرای یک سناریو هستند. قطعاً دستورات داکر بسیار بیشترند. برای نصب وردپرس با تنظیمات دلخواه می‌توانید به این سایت مراجعه کرده و تنظیمات بیشتر را در آن مطالعه کنید.


  شکل 6. دسترسی به وردپرس و انجام تنظیمات اولیه

نصب وردپرس به کمک داکر در مقایسه با روش نصب سنتی آن، از سادگی بسیار بیشتر و سرعت بالاتری برخوردار است. تنها با وارد کردن دو خط دستور، وردپرس آماده می‌شود. در این روش، از پیچیدگی‌های روش سنتی به‌شدت کاسته شده است. علاوه بر آن گزارش شده است در صورتی که هم‌زمان VMware Workstation و Xampp را در سیستم خود نصب داشته باشید، برخی از سرویس‌های Xampp به‌درستی اجرا نخواهند شد. این موضوع به دلیل اجرای یک پردازش با نام VMware-hostd.exe است که از پورت 443 استفاده می‌کند و مانع از اجرای صحیح تمام سرویس‌های Xampp می‌شود. به همین دلیل، برای اجرای وردپرس به وسیله Xampp باید این پردازش را متوقف کنید. با نصب از طریق داکر تمامی این مشکلات حل خواهد شد. می‌توانید کانتینرهای متفاوت را که ماهیت برنامه‌های آن‌ها با یکدیگر ناسازگار هستند، به‌درستی و راحتی نصب و اجرا کنید.

سخن آخر
با توجه به عمر کوتاه داکر، این برنامه توانسته است به سرعت راه خود را پیدا کند. بی‌تردید، این پلتفرم به‌زودی راه خود را در میان شرکت‌های تولیدکننده محصولات نرم‌افزاری باز خواهد کرد. استفاده از داکر قابلیت حمل‌ برنامه‌ها (portability)، سرعت و انعطاف‌پذیری در اجرا را به‌شدت افزایش و تنظیمات لازم برای اجرا را کاهش می‌دهد. حال باید پرسید که آیا داکر جایگزینی برای ماشین‌های مجازی خواهد شد؟ خیر؛ نخواهد شد. داکر از تکنولوژی‌ای استفاده می‌کند که سرعت تولید را در محیط‌های ساخت برنامه به‌شدت افزایش می‌دهد، اما نمی‌تواند دربرگیرنده تمام مزیت‌های ماشین مجازی باشد.
 شاید در آینده، مزیت‌های این پلتفرم به اندازه‌ای گسترده شود که بتواند تمام مزیت‌های ماشین مجازی را دربرگیرد، اما در حال حاضر تمرکز گروه توسعه‌دهنده بر اهداف اصلی داکر متمرکز شده است و کاملاً در این راه موفق بوده‌اند.

==============================

شاید به این مقالات هم علاقمند باشید:

چگونه از یک سایت وردپرسی پشتیبان‌گیری کنیم؟

ابزار پا‌ک‌سازی Disk Cleanup امنیت ویندوز ۱۰ را به خطر می‌اندازد

آسیب‌پذیری‌های افزونه‌های وردپرس رفع شد!

یخچال هوشمند ال‌جی میزبان سیستم‌عامل ویندوز 10 شد!

چگونه هکرها به حساب‌های متعدد فیس‌بوک نفوذ می‌کنند؟

چگونه گوگل میلیاردها کد برنامه‌نویسی را مدیریت می‌کند؟

۶ کتاب پیشنهادی برای علاقه‌مندان برنامه‌نویسی

۵ افزونه برتر امنیتی وردپرس

برچسب: