باسلام خدمت همراهان همیشگی وبلاگ گروه کاربران لینوکس
در این پست قصد داریم ابتدا با نرم افزار محبوب داکر آشنا شویم و سپس به کمک هم آن را بر روی سیستم عامل Fedora 28 نصب کرده و یک پروژه نمونه nodejs بر روی آن دیپلوی کنیم.
مقالات فراوانی برای آشنایی با داکر نوشته شده است ، به طور مثال در سال گذشته به کمک دوستان مقاله ای تحت عنوان " داکر و مجازی سازی لایه نرم افزار " در نشریه Slash منتشر کردیم که در این جا به صورت مختصر آن را شرح خواهیم داد :
در آن مقاله ابتدا انواع مجازی ساز ها را بررسی کردیم و بیان کردیم که بسیاری از مجازی ساز ها ، مانند KVM تمایل به مجازی سازی کل یک سیستم عامل را دارند و این کار سبب میشود که بر روی یک سرور فیزیکی تعداد بسیار بالایی نرم افزار سیستمی مشابه همواره در حال اجرا باشند و همه یک کار را انجام دهند ، برای مثال تصور کنید که بر روی یک سرور ۱۰ عدد ماشین مجازی لینوکس داریم ، با احتساب خود سیستم اصلی حداقل ۱۱ کرنل لینوکس درحال اجرا هستند و ۱۱ سرویس iptable و ... تمامی این ها سبب میشوند که بخش بزرگی از منابع سیستم ما صرف کارهای تکراری شود.
این موضوع سبب شد که طرفداران مجازی سازی به فکر راه حل بهتری بیفتند و این جا بود که کلمه Container در ادبیات مدیران سرور رواج یافت . به بیان ساده ، کانتینر یک محیط ایزوله شده شامل تمامی کتابخانه های مورد نیاز و یک برنامه درحال اجراست . اگر بخوایم از دید مجازی سازی نگاه کنیم ، کانتینر را میتوان یک ماشین مجازی منهای هسته و سرویس های اصلی سیستم عامل دانست که مهم ترین مزیت آن کاهش کار های تکرای و در نتیجه کاهش سربار سیستم است. اگر تمایل دارید بیشتر درمورد داکر و تاریخچه آن بدانید پیشنهاد میکنم مقاله کامل را در نشریه مطالعه کنید.
نصب داکر
پس از آشنایی مختصر با داکر ، به نصب آن بر روی سیستم عامل محبوب Fedora میپردازیم . توجه کنید که تمامی دستورات میبایست با کاربر root و یا به کمک دستور sudo اجرا شوند.
اولین مرحله نصب داکر ، اضافه کردن ریپازیتوری آن به سیستم عامل است . برای این کار ابتدا قابلیت مدیریت ریپازیتوری ها را به پکیج منیجر dnf ( پکیج منیجر جدید سیستم عامل Fedora که عملکردی مشابه yum دارد.) اضافه میکنیم :
dnf -y install dnf-plugins-core
پس از آن دستور زیر را برای اضافه کردن ریپازیتوری وارد میکنیم:
dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repodnf config-manager --set-enabled docker-ce-edge
در نهایت برا ی نصب داکر ، پکیج آن را نصب میکنیم:
dnf install docker-ce
پس از نصب داکر میبایست سرویس آن را به کمک دستور مدیریت سرویس ها ، روشن کنیم:
systemctl start docker
حال میتوانیم صحت نصب خود را آزمایش کنیم . برای این کار یک کانتینر نمونه را اجرا میکنیم :
docker run hello-world
نتیجه به صورت زیر خواهد بود:
دیپلوی پروژه :
درمرحله قبل نصب داکر را با موفقیت پشت سرگذاشتیم ، حال قصد داریم یک پروژه نمونه nodejs را از طریق git دریافت کرده و با داکر دیپلوی کنیم. اگر بر روی سیستم شما git نصب نیست ابتدا آن را با دستور زیر نصب کنید:
dnf install git
سپس با دستور زیر یک پروژه نمونه (این پروژه ، نسخه fullstack app فریم ورک Adonisjs میباشد . اگر تمایل دارید درمورد این فریم ورک بیشتر بدانید میتوانید به مقاله ای که قبلا نوشته ام مراجعه کنید.):
git clone https://github.com/adonisjs/adonis-fullstack-app.git
حال وارد پوشه پروژه شده و از طریق ویرایشگر nano یک docker file ایجاد میکنیم. لازم به ذکر است که داکر فایل ها ، فایلی شامل دستورالعمل هایی هستند که برای تولید کانتینر به آن ها نیاز داریم.
cd adonis-fullstack-app
nano Dockerfile
موارد داخل عکس را در فایل تایپ میکنیم و سپس با control+x ذخیره میکنیم:
شرح مختصر کدها : ابتدا یک ایمیج دیگر را به عنوان بیس کار خود انتخاب میکنیم (که ما node:carbon که ایمیج رسمی است را انتخاب کردیم) . ایمیج اولیه مانند یک سیستم عامل اماده به کار که بر روی آن نیازمندی های پروژه مانند nodejs نصب شده است عمل میکند. سپس یک دایرکتوری به عنوان پوشه اصلی پروژه انتخاب کرده و فایل package.json که شامل نیازمندی های پروژه (شامل کتاب خانه ها و فریم ورک ها) میباشد را در دایرکتوری پروژه کپی میکنیم. پس از آن با دستور npm install که وظیفه نصب اخرین نسخه نیازمندی هارا داد ، تمامی آن ها را نصب میکنیم و در پایان تمامی فایل های پروژه را در مسیر اصلی کپی کرده و پورت 3333 را باز میکنیم(پورتی که اپلیکیشن از طریق آن قابل دسترس خواهد بود) . خط اخر نیز برای تعیین دستوری است که پس از اجرای کانتینر اجرا خواهد شد که به دلیل توسعه این پروژه با nodejs از دستور npm start استفاده کرده ایم.
نکته مهم : برای تسلط کامل بر روی داکر فایل ها نیاز است که کتاب هایی مانند Docker Cookbook (انشارات O'Reilly Media) را مطالعه کنید .
سپس کانتینر را با نام دلخواه (ما root/nodeapp قرارا دادیم) build میکنیم:
docker build -t root/nodeapp .
و در نهایت آن را اجرا میکنیم ( پورت 3333 همان پورت دسترسی به اپلیکیشن است):
docker run -p 3333:3333 -d root/nodeapp
حال از طریق مرورگر میتوانیم وب اپلیکیشن خود را مشاهده کنیم :
نویسندگان :مهدی تمدن - زهرا هاشم پور
منابع :
آموزش داکرایز یک پروژه nodejs (انگلیسی)
آموزش نصب داکر بر روی فدورا (انگلیسی)
نشریه اسلش - ۱۳۹۶