معرفی Docker
هر چند که ایده اولیه Docker در سال های قبل نیز وجود داشته و شرکت های مختلفی روی آن کار می کردند اما به صورت رسمی در سال 2014 توسط آقای Salomon Hykes شکل گرفته و ارائه شده است.
هدف او از ارائه این سیستم این بود که برنامه نویسان و ادمین های سیستم تعامل راحت تری با مفهوم Container داشته باشند و
برنامه ها خیلی راحت تر روی محیط عملیاتی و سرورها اجرا شوند. چرا که یکی از چالش های بزرگ
برنامه نویسان این است که برنامه را در یک بستر خاص توسعه می دهند اما در محیط
عملیاتی، کلی دردسر برای این که چطور تنظیمات آن ها را انجام دهند وجود دارد و معمولا
مدیران سیستم کلی درد سر می کشند تا نرم افزار شما را راه اندازی نمایند و در برخی موارد حتی خود
برنامه نویس باید وارد شده و تنظیمات لازم را انجام دهد تا آن را راه اندازی نماید.
مسئله ای که وجود دارد این است که هر نرم افزاری نیازمندی های مخصوص خود را داشته و ممکن است نیازمندی های آن ها متفاوت از یکدیگر باشند:
معرفی Container
در ایده اولیه Docker این مطرح شد که نرم افزارها به شکل یک Container یا بسته ای دیده شود که شامل تمام
موارد مورد نیاز از قبیل ابزارهای سیستمی و فایل های سیستمی و تمام وابستگی ها و
کتابخانه ها و هر چه لازم است حتی موتورهای Run Time می باشد که همه در یک بسته به نام Container گذاشته شده است و می توان آن را به راحتی از یک محیط به محیط دیگر منتقل نمود. بدون این که درد سر داشته باشیم که چطور آن را
تنظیم کنیم و چطور نصب آن را انجام دهیم و برای این پیش نیازها در محیط عملیاتی درد سر داشته باشیم.
بسته تولید شده در محیط توسعه به راحتی به محیط عملیاتی منتقل شده و به راحتی فقط با چند دستور
بسته را بالا آورده و برنامه اجرا خواهد شد. در محیط دیگر نیز همان بسته منتقل خواهد شد و به راحتی کار خواهد کرد. این
بسته دارای سیستم فایل مخصوص خودش است و امکان استفاده از شبکه و بسیاری از امکانات دیگر را برای ما فراهم می کند. در محیط
عملیاتی روی یک سیستم عامل می توان چندین Container داشت که همه آن ها از یکدیگر ایزوله هستند و هر کدام برای خودشان فضای کاری مخصوص به خودشان را دارند.
برای مثال در تصویر زیر چندین Container که هر کدام از آن ها نرم افزارهای مخصوص خود را دارند همه تحت Docker مدیریت می شوند.
نقش Docker
Docker در واقع یک پلت فرم برای مدیریت Containerها است و شعار آن این است
Build any app, Ship anywhere, Run any where
یعنی هر نوع برنامه ای که تمایل دارید را توسعه دهید و آن را هر جایی که تمایل دارید منتقل کنید و روی هر بستری که تمایل داشتید آن را اجرا نمایید.
سیستم عامل و Docker
امکان استفاده از Docker در Windows Client و Windows Server همچنین Linux
و Mac وجود دارد. در سیستم عامل Windows Server از نسخه 2016 به بعد، به صورت
ساخته شده امکان استفاده از Docker و Container را پشتیبانی می کند و در نسخه 2019 ویژگی های بسیار خوبی را به این منظور افزوده است.
به دلیل این که در حال حاضر همه چیز به سمت مایکرو سرویس پیش می رود، استفاده از ویژگی های Docker می تواند بسیار مفید و موثر واقع شود و به عنوان
برنامه نویس و مدیر سیستم باید حتما با این مفهوم آشنا باشید.
Registery های Docker
همان طور که گفته شد پس از این که برنامه ها توسعه داده شد به صورت
Containerها می توانند در اختیار قرار بگیرند. به این منظور Registery یا
Repositoryهایی وجود دارد که قابلیت قرار دادن Containerها در آن ها وجود دارد. خود
Docker دارای چنین Registery می باشد. همچنین برخی شرکت ها مانند مایکروسافت ممکن است Registery مخصوص خود را داشته باشند. که در آن انواع Containerهای توسعه داده شده قرار داده شده است. Registeryها لزوما در شبکه اینترنت نیستند و ممکن است در شبکه محلی به صورت اختصاصی نیز استفاده شوند. برای مثال ممکن است شرکتی به صورت محلی در شبکه داخلی خود Registery اختصاصی را راه اندازی کرده باشد که در آن
Containerهای خود را قرار داده باشد. پس از اتصال به Registeryها قابلیت دانلود و نصب
Containerهای موجود در آن ها وجود دارد. این کار از طریق محیط Command Line امکان پذیر است. همچنین در محیط
توسعه، برای این کار ابزارها و نرم افزار هایی در زمینه وجود دارد که می تواند باعث راحتی کار شود.
اجرای SQL Server در بسترهای مختلف
از نسخه 2017 تغییرات بسیار خوبی در نرم افزار SQL Server ایجاد شد.
در نسخه های قدیمی، این نرم افزار تنها در بستر Windows اجرا می شد اما در نسخه
2017 امکان اجرای آن روی انواع نسخه های Linux فراهم شد و اغلب امکانات Windows روی
Linux نیز پشتیبانی می شود. علاوه بر این در نسخه 2017 امکان اجرای SQL Server روی
Docker فراهم شد. سپس در نسخه 2019 نیز امکان استفاده از Kubernetes و همچنین امکان
استفاده از Big Data Cluster که به نوعی به Docker مربوط می شود ایجاد شد.
در ادامه به چگونگی راه اندازی Docker اشاره خواهیم داشت:
نصب
ابتدا با توجه به سیستم عامل مورد استفاده دستور مورد نیاز را برای نصب Docker اجرا می کنیم.
Fedora:
CentOS7:
Debian:
بررسی نسخه Docker
پس از نصب برای بررسی کردن این که آیا Docker کار می کند یا خیر دستور زیر را اجرا می کنیم:
مشاهده Containerهای موجود در Docker
برای مشاهده لیست همه imageهایی که موجود هستند دستور زیر را اجرا می کنیم:
دریافت Container مورد نظر از Docker
برای دریافت یا به اصطلاح Pull کردن Container مورد نظر بر روی سیستم خود دستور زیر را اجرا نمایید:
پس از اتمام عملیات و دریافت کامل می توانید بررسی نمایید که آیا دانلود به صورت کامل انجام شده است یا خیر.
نصب Container دریافت شده
برای نصب Container دریافت شده از Repository دستور زیر را اجرا می کنیم:
لیست Containerهای نصب شده
برای مشاهده لیست همه Containerهایی که روی سیستم نصب شده و Up هستند دستور زیر را اجرا می کنیم:
اجرای Container نصب شده
برای اجرای Container نصب شده دستور زیر را اجرا می کنیم:
مشاهده Log
می توانید Logهای مربوط به Containerهای نصب شده و در حال اجرا را با دستور زیر مشاهده نمایید:
*منابع: http://www.docker.com