مقدمهای بر کانتینرها (Containers)
در مواردی لازم است چند سرویس مختلف را ایجاد نموده و با آنها کار کنید بطوریکه هیچ کدام از این سرویسها در کار هم تداخل ایجاد نکنند. در چنین حالتی لازم است که چندین ماشین مجازی ایجاد کرده و سرویسهای خود را بر روی آنها اجرا کنید. ایجاد چندین ماشین مجازی و اجرای سیستم عامل بر روی هرکدام از آنها، علاوه بر ایجاد افزونگی بار بر روی کامپیوتر شما، به شدت منابع سختافزاری شما را درگیر خواهد کرد.
و یا حالتی را در نظر بگیرید که برنامه نویس PHP هستید و برای نوشتن برنامه خود لازم است که یکسری پیشنیازها مانند یک وبسرور(مثلا آپاچی) و یک پایگاهداده(MySQL) و……نصب کنید و تنظیمات مربوط به هرکدام از آنها را انجام دهید. حال در نظر بگیرید که تمام موارد بالا را بر روی کامپیوتر خود اجرا کرده و برنامه خود را نوشتید. در چنین حالتی اگر نیاز داشته باشید که کد خود را به کامپیوتر خود در منزل منتقل کنید و آن را در منزل ادامه دهید، نیاز دارید که تمام پیشنیازهای لازم را دوباره بر روی سیستم خود در منزل نصب کنید در حالی که با رعایت هر کدام از این موارد، ممکن است کد شما به هنگام اجرا برروی سیستم خانگی شما، همراه با خطاهایی باشد.!!!!!
بنابراین، اگر مهندس شبکه و یا برنامهنویس هستید، داکر این امکان را به شما میدهد، تا با ایجاد یک سری محفظه (Container)، تمامی ابزارهای لازم برای محیط توسعه نرم افزار را، در این محفظه قرار دهید، و هر کجا که خواستید آن را انتقال داده و استفاده کنید.
مقایسه کانتینر و ماشین مجازی
کانتینرها از طریق مجازیسازی در سطح سیستمعامل، امکان ایجاد چندین محیط مجازی(کاملا ایزوله) را بر روی یک میزبان فراهم میکنند. در واقع به جای استفاده از چندین سیستمعامل(مانند VMها)، سیستمعامل اصلی را به اشتراک میگذارند و کاربران تصور میکنند که با سیستمعامل اصلی درتماسند. این درحالی است که برای هرکانتینر(به منظور اجرای برنامهها)، یک سیستمعامل مجازی تخصیص داده میشود. پیش از کانتینرها، دو مفهوم “multitasking” و”hypervisor-based virtualization“،مورد استفاده قرار میگرفت .
مفهوم “multitasking”، امکان اجرای چندین برنامه بر روی یک ماشین را فراهم میکند ولی با این تفاوت که امکان ایزولهسازی(مجزاکردن) برنامهها از هم بسیار کمتر خواهدبود. حالت “hypervisor-based virtualization “، امکان ایجاد چندین برنامهی کاربردی بر روی چندین ماشین مجازی را فراهم میکرد و در چنین حالتی لازم است که بر روی هر ماشین مجازی، ابتدا یک سیستمعامل جداگانه نصب و سپس سرویس مورد نظر اجرا شود. در این رویکرد بالاترین سطح از ایزولهسازی سرویسها از هم فراهم میشود. اما این روش نیز به دلایل زیادی مناسب نیست که از جمله آنها، عبارتند از:
۱- هر سیستمعامل یک زمانی را برای بوت شدن(راهاندازی)، نیاز دارد.
۲- منابع سختافزاری که در زمان ایجاد ماشینهای مجازی تخصیص داده میشود(همچون حافظه)، در صورت آزاد شدن، توسط ماشینهای دیگر قابل استفاده نیستند.
شکل زیر مفهومی از مجازیسازی را نشان میدهد:
این درحالی است که با استفاده از کانتینرها، لازم نیست که زمانی را برای بوت شدن سیستمعاملهای دیگر(به جز سیستمعامل اصلی)، منتظر بمانید. تخصیص منابع با دقت صورت میگیرد و توسط سیستمعامل اصلی مدیریت میشود.شکل زیر مفهوم مجازیسازی در کانتینرها را نشان میدهد:
داکر چیست؟
داکر یکی از پلتفرمهای معروف و محبوب کانتینر میباشد که به ما اجازه میدهد تا به سرعت اقدام به ساخت، تست و گسترش برنامههای کاربردی کنیم. در واقع، پس از نصب داکر، برنامههای کاربردی مورد نظرما ( بهمراه تمام وابستگیها و کتابخانهها و کدها) بصورت imageهایی درون واحدهای استانداردی به نام “کانتینر“، قرار میگیرند. کانتینرهای موجود بر روی داکر، یک محیط بسته را برای هر یک از برنامههای کاربردی مورد نظر ایجاد میکنند و از این طریق مانع از تداخل در اجرای برنامههای کاربردی نسبت بهم میشوند. با استفاده از داکر شما میتوانید به سرعت برنامههای کاربردی مورد نظرتان را مستقر کنید و آنها را در هر محیطی توسعه دهید و این اطمینان را داشته باشید که کدتان اجرا خواهد شد.
نکته!!!
داکر اقدام به مجازیسازی در سطح سیستم عامل میکند. در واقع درست بر عکس VM، که مجازی سازی را در سطح سختافزار انجام میدهد و هر بار با ایجاد یک ماشین مجازی نیاز به ایجاد یک سیستم عامل بر روی آن هستیم. اما داکر در حالتی که چندین کانتینر را اجرا میکنیم، به هر کدام از آنها یک سیستم عامل مجازی تخصیص میدهد، بطوریکه کاربر فکر میکند که با سیستم عامل اصلی کار میکند.
نصب داکر در لینوکس
گام اول:نصب داکر
درواقع بستهی مربوط به نصب داکر در ریپازیتوری ubuntu موجود است اما آخرین نسخه از داکر نیست. بنابراین برای اطمینان از دریافت آخرین نسخه، اقدام به دریافت آن از طریق سایت رسمی داکر (www.docker.com)، میکنیم.در ابتدا توصیه میشود که فهرست پکیجهای موجود در ریپازیتوریهای ubuntu را با دستور زیر بروزرسانی کنید:
$ sudo apt update
سپس اقدام به نصب بستههای پیش نیاز، قبل از نصب داکر میکنیم:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
و درآخر با دستور زیر اقدام به نصب داکر میکنیم:
$ sudo apt install docker-ce
اگر تا به اینجا موفق به اجرای درست دستورات شده اید، آخرین نسخهی داکر بر روی ubuntu شما نصب شده است. به منظور مشاهدهی وضعیت داکر نصب شده، دستور زیر را در محیط اوبونتو خود وارد کنید:
$ sudo systemctl status docker
خروجی این دستور باید مشابه تصویر زیر باشد:
همانطور که مشاهده میکنید، خروجی حاصل در تصویرنشاندهندهی فعال(active) بودن داکر نصب شده است.
گام دوم: استفاده از دستورات داکر
به منظور آشنایی با دستورات موجود در داکر، دستور زیر را وارد کنید:
$ docker
همچنین به منظور مشاهدهی اطلاعات جزئیتر از داکر میتوانید دستور زیر را وارد کنید:
$ docker info
گام سوم: استفاده از Docker Images
کانتینرهای داکر حاوی Docker imageها هستند و بصورت پیش فرض، داکر این imageها را ازسایت Docker Hub (به نشانی hub.docker.com)، دانلود میکند. در واقع ریپازیتوری داکر بوسیلهی شرکت داکر مدیریت میشود و هر کسی میتواند docker imageهای خود را بر روی این سایت قرار دهد. بیشتر imageهای برنامههای کاربردی و توزیعهای لینوکس که شما نیازخواهید داشت، در این سایت قرار دارد.
همانطور که در تصویر بالا مشاهده میکنید، شما میتوانید imageهای مورد نظرتان( در اینجا ubuntu) را جستجو کنید و با انتخاب آن، برچسب موجود در سمت راست صفحه(بعنوان مثال در اینجا docker pull ubuntu) را انتخاب ودر داکر خود کپی و مراحل نصب ایمیج مورد نظر را طی کنید.
گام چهارم: مثال نصب کنترلر ODL
ابتدا وارد سایت Docker hub، شوید و کنترلر مورد نظرتان( دراینجا opendaylight) را جستجو کنید:
سپس با انتخاب کنترلر مورد نظر، دستور مربوط به نصب image، موجود در سمت راست صفحه را انتخاب کنید و در اوبوتو به منظور نصب وارد کنید:
$ docker pull glefevre/opendaylight
پس از اتمام مراحل نصب دستور زیر را به منظور اجرای کنترلر وارد کنید:
$ docker run -it glefevre/opendaylight docker run -it glefevre/opendaylight
نصب داکر در ویندوز
برای نصب داکر در ویندوز لازم است که به موارد زیر بعنوان پیشنیاز توجه کنید:
۱- دارا بودن ویندوز ۱۰
۲- وارد مسیر Control Panel\Programs\Programs and Features شوید وبا انتخاب Turn windows features on or off، قابلیت Hyper-V را فعال کنید.
۳- لازم است حداقل ۴ گیگ RAM داشته باشید.
نکته!!!!
با فعال شدن این قابلیت، دیگر قادر به اجرا کردن ویرچوال باکس یا VM wareتان نخواهید بود. اما در این مورد نگران نباشید. ماشینهای مجازی شما سالم وبه محض غیرفعال کردن این قابلیت، اجرا خواهند شد. علاوه براین، شما میتوانید Docker toolbox را نصب کنیدو به جای استفاده از قابلیت Hyper-V، از ویرچوال باکس اوراکل استفاده کنید.
گام اول:نصب داکر
به سایت زیر مراجعه و فایل نصب داکر را دانلود کنید:
https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
پس از اتمام دانلود، بر روی فایل دانلود شده(همانطور که در تصویر مشاهده میکنید)، کلیک کرده و اجازه بدهید تا مراحل نصب انجام شود.
پس از اتمام مراحل نصب وارد منوی Start شوید و کلمهی Docker را جستجو کنید
نکته
اگر هنگام اجرا با خطایی مواجه شدید، این خطا مربوط به غیر فعال بودن قابلیت Hyper-v است.
پنجرهی cmd خود را باز کنید و با تایپ docker version، میتوانید اطلاعات مربوط به داکر خود را مشاهده کنید.
توجه!!!!!!!
میتوانید از تمام دستورات گفته شده در بخش لینوکس استفاده کنید.
گام دوم: نصب کنترلر
در ابتدای امر با مراجعه به سایت docker hub یا با استفاده از دستور docker search اقدام به جستجوی ایمیج مربوط به کنترلر خود کنید. برای کسب اطلاعات بیشتر در مورد شبکه نرم افزار محور و کنترلرهای آن به این لینک مراحعه کنید.
سپس اقدام به نصب ایمیج کنترلر انتخابی خود کنید
اطمینان یابید که ایمیج را با موفقیت دانلود کردهاید
حال، وقت آن رسیده است که کنترلر خود را اجرا کنید
نتیجهگیری
در این آموزش، شما با مراحل نصب داکر(بخصوص در لینوکس و ویندوز) و مفاهیمی همچون ایمیجها و کانتینرها در داکرآشنا شدید. انتظار داریم که با نصب داکر و بهرهمندی از قابلیتهای آن، اقدام به ایجاد پروژههای خود و توسعهی آسان و سریع آنها کنید.
(8) دیدگاه
ممنون عالی بود
مطلب بسیار آموزنده
واقعا مطلب کامل و مفیدی بود
خیلی خوب بود مرسی
بسیار جذاب بود مرسی
بسیار ممنون
عالی عالی عالی
سلام ، ابتدا از مطالب مفید وآموزنده ی سایت تان تشکر می کنم و سوالی داشتم خدمت شما.
بسیار ممنون میشم پاسخ دهید.
آیا با داکر می تونم چند کنترلر را همزمان اجرا کنم و به یک توپولوژی متصل نمایم؟
پیشاپیش سپاسگزارم