رهبر گروه کانتینرها (بخش اول)

خب تو اولین شماره مجموعه مطالب کوبرنتیز که بعد از مقدمه یا همون شماره صفر مینویسم، میخوام از مقدمات و بحث های ساده شروع کنیم به پیش رفتن. ولی چون با داکر خیلی سروکار داریم و مفاهیم داکری، سعی میکنم تو این شماره، خیلی خلاصه درباره داکر صحبت کنم و کامندهای پرکاربردمونو مشخص کنم.

داکر چیه؟ (جواب رو از این جا کپی کردم)

اگر یک برنامه‌نویس باشید، حتماً میدانید که برای تولید یک برنامه، ابتدا باید یک سری محیط‌های عملیاتی را اجرا کنید. مثلا فرض کنید، شما برنامه‌نویس با زبان برنامه نویسیِ PHP هستید. احتمالاً باید یک وب‌سرور(مثلا آپاچی) را بر روی سیستم خود نصب کنید. احتمالا یک سرور Mysql نیز برای مدیریتِ پایگاه‌داده احتیاج دارید. اگر حرفه‌ای‌تر برنامه نویسید، ممکن است، نیاز داشته باشید که چند ماژولِ اضافی برای PHP نصب کنید و تنظیماتِ مختلفِ آن را انجام دهید. همه ی مواردِ بالا، بایستی بر روی سیستمِ شما انجام شود، و اگر شخص دیگری هم خواست برنامه‌ای که شما نوشته‌اید را توسعه دهد(یا خودتان خواستید، همین برنامه را بر روی یک کامپیوترِ دیگر توسعه دهید)، احتیاج دارید که همه‌ی این ابزارها را نیز، دوباره بر روی آن سیستم نیز، نصب کنید. داکر این امکان را به شما می دهد،‌ تا با ایجاد یک سری محفظه(Container)، تمامی ابزارهای لازم برای محیطِ توسعه‌ی نرم افزار را، در این محفظه قرار دهید، و هر کجا که خواستید آن را انتقال داده و استفاده کنید. یعنی در مثالِ بالا دیگر احتیاج ندارید هر بار بر روی هر کامپیوتر، تنظیمات PHP و MySQL را انجام دهید، زیرا با نصب نسخه داکرِ آن، تمامی مواردی که نصب یا تنظیم کرده‌اید، برای شما محیا می‌شود. حتی بسیاری از شرکت ها، نیز میتوانند، از داکر(Docker)، در محیط اجرا(Deployment Environment)، استفاده کنند.

اما تفاوت داکر با ماشین‌های مجازی(Virtual Machine) چیست؟

اگر با ماشین های مجازی کار کرده باشید، میدانید که این ماشین‌ها نیز همین کار را برای کاربران انجام می‌دهند. تفاوت اصلی داکر، با ماشین های مجازی، این است در داکر، بر خلاف ماشین های مجازی، کل سیستم عامل ذخیره نمی‌شود و فقط کتابخانه‌ها و تنظیمات مورد نیاز، در داکر ذخیره می شود. به این صورت حجم بسیاری کمتری برای انتقال و نصب مجموعه‌ی نرم‌افزارها نیاز دارید.

همونطور که تو این مطلب بالا گفته، با داکر ما یک محیط ایزوله درست میکنیم و نرم افزار رو اون تو با همه جزیئاتش قرار میدیم و آماده اجرا میشه! فقط باید توجه داشته باشیم که این تکنولوژی ها جدید نیستن و از خیلی وقت پیش ها در کرنل لینوکس بودن و داکر فقط کار رو راحت تر کرده. اگر میخواین عمیقتر بررسی کنین کافیه این مطلب مفصل و کامل رو مطالعه کنید تا بدونید داکر چطور همه این کارهارو انجام میده.


احتمالا باید درک خوبی از کاربرد و کلیت کار داکر پیدا کرده باشید. بیاین کمی عمیقتر شیم. مفهوم image ها در داکر. گفتیم که داکر وقتی نرم افزار رو اجرا میکنه یک container میسازه، اما این container از رو هوا خلق میشه؟ نه،‌بلکه هر container ای از یک image ساخته میشه. به عبارت دیگه و ساده و خودمونیش هر image شرایط بالقوه یک نرم افزاره و هر container حالت بالفعل شده یک image. اما این image ها خودشون از کجا میان؟ از یک فایل به اسم Dockerfile!

نمونه یک Dockerfile ساده داکر برای یک نرم افزار python ای:

تو این تصویر میبینیم که اول اومده گفته من میخوام از یک image دیگه یعنی image آماده و عمومی به اسم python که نسخه 3 اش مدنظرمه میخوام استفاده کنم. بعدش گفته فایل my_script.py رو از همین دایرکتوری که الان داخلشم کپی کن توی کانتینر و بزار تو پوشه root. بعد هم با پکیج مننجر پایتون یک کتابخونه نصب کرده و در نهایت گفته هر وقت که کسی این image رو اجرا کرد اون CMD اجرا بشه. یعنی هر کس این image رو ران کنه این مراحل انجام میشه و برنامه اصطلاحا اجرا میشه. به همین سادگی !

ما وقتی یک Dockerfile رو build میکنیم عملا یک image میسازیم. و وقتی یک image رو اجرا میکنیم انگار داریم یک container میسازیم که رسما دیگه آماده به کار شده و قابل استفاده است.


دنیای داکر خیلی بزرگه. از مبحث Volume ها بگیرید تا مباحث Network و Registry ها و کانفیگ های مختلف برای ران کردن و قواعد اصولی نوشتن Dockerfile و best practice هاش. پس ما خیلی سریع ازش میگذریم و فرض میکنیم که شما یاد دارین یا دارین یاد میگیرین.


من داکر یاد ندارم و میخوام داکر یاد بگیرم. چه کنم؟

  • من اولین جایی که داکرو خیلی خوب فهمیدم و هر وقت مشکلی دارم اونجا میرم دایکیومنت رسمی داکره. خیلی راحت و خوب و کامل نوشتنش. از اینجا میتونین شروع کنین به خوندن. اگر هم هنوز نصب نکردین از اینجا شروع کنین (برای اوبونتو ۱۸.۰۴)
  • شروع کنید به جستجو درباره داکرایز کردن یک پروژه سمپل و ساده. مثلا من اگر باشم سرچ میکنم: Dockerizing a simple php application و شروع میکنم به خوندن و انجام دادن و خراب کردن و از نو ساختن تا یاد بگیرم.
  • یک کورس خوب و کامل تماشا کنید: من از اینجا چند تا کورس گرفتم و تماشا کردم. اکثرشون خوب بودن ولی این رو بیشتر دوست داشتم.

چیزهایی که زیاد استفاده میکنیم:


در مطلب بعدی میخوام دو تا سرویس درست کنم که یکیشون اصطلاحا stateless باشه و یکیشون هم stateful که با پایگاه داده کار میکنه. برنامه ها چی باشن و چی کار بکنه و .. رو هر وقت خواستم مطلبو آماده کنم بهش فکر میکنم ولی اگر ایده ای دارین بگین تو کامنت ها! ولی یک طوری باید باشه که بتونم تو دو ساعت کلشو بنویسم و تست کنم. پس تا مطلب بعدی که هفته بعدی میاد رو وبلاگ، شما رو با داکر تنها میزارم.

بازدیدها: 74

۲ دیدگاه

  1. به نظرم اگه امکانش هست بعضی اوقات ویدیو‌ها کوتاه از کارت درست کن.
    اگه خیلی دیگه حال داشتی توییچ استریمش کن .
    چون مبحث نو و جالبی هست .

    1. حقیقتش محتوای خیلی خاص و مهمی برای تولید ندارم. چون دانش خاصی ندارم. ولی سعی میکنم اگر چیزی بلدم که به بقیه کمک میکنه رو فعلا با نوشتن پیش ببرم. اگر زمانی تونستم دانش جدیدی تولید کنم حتما این کار رو میکنم.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *